---
template: policy-doc@1
doc_id: 04-runtime-topology
title: 스케줄러 런타임 토폴로지 — 선언 상태와 활성 판정
config: ../_meta/template-config.yaml
last_verified: 4d798f55
policies:
  - id: declaration:alimtalk-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:44
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:44
      - prod:insuniverse-server/apps/api/dockerfile:44
  - id: declaration:analysis-stall
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:46
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:46
      - prod:insuniverse-server/apps/api/dockerfile:46
  - id: declaration:analysis-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:45
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:45
      - prod:insuniverse-server/apps/api/dockerfile:45
  - id: declaration:delete-analysis
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:51
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:51
      - prod:insuniverse-server/apps/api/dockerfile:51
  - id: declaration:delete-fc
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    limitations:
      - 소스의 진입 함수가 정의만 되고 호출되지 않는다 — `apps/api/src/schedules/delete-fc.schdule.ts` 최상위가 `async () => { … };` 함수 표현식이고 두 기준점(동결 stg `4d798f55` · prod `2d3b238e`) 모두에서 그것을 실행하는 구문이 없다. 다른 15종은 `})();` IIFE 다. 라벨이 주입돼 컨테이너가 이 파일을 실행해도 `NestFactory.createApplicationContext` 와 `deleteFc()` 에 도달하지 않는다 — **활성 미판정과 별개로, 소스 수준에서 이 배치는 아무 일도 하지 않는다**
    anchors:
      - insuniverse-server/apps/api/dockerfile:52
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:52
      - prod:insuniverse-server/apps/api/dockerfile:52
  - id: declaration:delete-invoice-files
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:55
      - insuniverse-server/apps/api/dockerfile:57
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:55
      - prod:insuniverse-server/apps/api/dockerfile:57
  - id: declaration:delete-treat
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:47
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:47
      - prod:insuniverse-server/apps/api/dockerfile:47
  - id: declaration:disable-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:48
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:48
      - prod:insuniverse-server/apps/api/dockerfile:48
  - id: declaration:expired-money
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:54
      - insuniverse-server/apps/api/dockerfile:56
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:54
      - prod:insuniverse-server/apps/api/dockerfile:56
  - id: declaration:fax-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:56
      - insuniverse-server/apps/api/dockerfile:58
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:56
      - prod:insuniverse-server/apps/api/dockerfile:58
  - id: declaration:push.scheduler
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 배포 선언 자체가 없고 게이트도 없다. 후보 인덱스가 reachability.grade=source-declared · deployment_evidence=false 로 기록했으므로 prod 도달이 미증명이며, 라벨이 없어 CI 주입값으로 도달을 확인할 경로도 없다
    limitations:
      - 근거 등급 A-scheduler 의 실측 열은 CI SCHEDULER_TYPE 주입을 든다. 이 단위는 그 경로가 아니라 소스의 @Cron 데코레이터가 선언 지점이므로 같은 등급을 다른 형태의 근거로 쓴다
    anchors:
      - insuniverse-server/apps/api/src/modules/push/push.scheduler.ts
    anchors_qualified:
      - insuniverse-server/apps/api/src/modules/push/push.scheduler.ts
  - id: declaration:regular-agency-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:43
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:43
      - prod:insuniverse-server/apps/api/dockerfile:43
  - id: declaration:regular-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:42
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:42
      - prod:insuniverse-server/apps/api/dockerfile:42
  - id: declaration:sales-statistics
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:53
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:53
      - prod:insuniverse-server/apps/api/dockerfile:53
  - id: declaration:samsung-s2-report-final
    status: conditional-unknown
    evidence: [A-scheduler, B-commit]
    unknown_reason: 이 라벨은 prod 기준점 2d3b238e 에만 선언돼 있고 그 기준점은 schedules.yaml baseline.prod.frozen=false 다. SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    limitations:
      - 앵커가 미동결 prod 기준점 2d3b238e 에만 존재한다 — schedules.yaml baseline.prod.frozen=false 이며 상위 체크아웃의 prod 는 그 기준점보다 25커밋 앞서 있다
    anchors:
      - insuniverse-server/apps/api/dockerfile:55
    anchors_qualified:
      - prod:insuniverse-server/apps/api/dockerfile:55
  - id: declaration:samsung-s2-report-preview
    status: conditional-unknown
    evidence: [A-scheduler, B-commit]
    unknown_reason: 이 라벨은 prod 기준점 2d3b238e 에만 선언돼 있고 그 기준점은 schedules.yaml baseline.prod.frozen=false 다. SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    limitations:
      - 앵커가 미동결 prod 기준점 2d3b238e 에만 존재한다 — schedules.yaml baseline.prod.frozen=false 이며 상위 체크아웃의 prod 는 그 기준점보다 25커밋 앞서 있다
    anchors:
      - insuniverse-server/apps/api/dockerfile:54
    anchors_qualified:
      - prod:insuniverse-server/apps/api/dockerfile:54
  - id: declaration:settlement-agency
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:49
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:49
      - prod:insuniverse-server/apps/api/dockerfile:49
  - id: declaration:settlement-client
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: 동결 stg 기준점 4d798f55 에서 이 라벨의 선언은 해석되나, 후보 인덱스가 reachability.deployment_evidence=false 로 기록했다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다. 정본 어휘의 active-prod 는 prod 도달과 게이트 부재·활성 두 다리를 요구하는데 둘 다 서지 않는다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:50
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:50
      - prod:insuniverse-server/apps/api/dockerfile:50
  - id: schedule:alimtalk-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:44
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:44
      - prod:insuniverse-server/apps/api/dockerfile:44
  - id: schedule:analysis-stall
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:46
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:46
      - prod:insuniverse-server/apps/api/dockerfile:46
  - id: schedule:analysis-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:45
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:45
      - prod:insuniverse-server/apps/api/dockerfile:45
  - id: schedule:delete-analysis
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 소스 주석의 동작주기 값이 확인필요 다 — 저장소는 이 배치의 의도 주기조차 적어 두지 않았다 (apps/api/src/schedules/delete-analysis.schedule.ts:9)
    anchors:
      - insuniverse-server/apps/api/dockerfile:51
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:51
      - prod:insuniverse-server/apps/api/dockerfile:51
  - id: schedule:delete-fc
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 소스 주석의 동작주기 값이 확인필요 다 — 저장소는 이 배치의 의도 주기조차 적어 두지 않았다 (apps/api/src/schedules/delete-fc.schdule.ts:8)
      - 소스의 진입 함수가 정의만 되고 호출되지 않는다 — `apps/api/src/schedules/delete-fc.schdule.ts` 최상위가 `async () => { … };` 함수 표현식이고 두 기준점(동결 stg `4d798f55` · prod `2d3b238e`) 모두에서 그것을 실행하는 구문이 없다. 다른 15종은 `})();` IIFE 다. 라벨이 주입돼 컨테이너가 이 파일을 실행해도 `NestFactory.createApplicationContext` 와 `deleteFc()` 에 도달하지 않는다 — **활성 미판정과 별개로, 소스 수준에서 이 배치는 아무 일도 하지 않는다**
    anchors:
      - insuniverse-server/apps/api/dockerfile:52
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:52
      - prod:insuniverse-server/apps/api/dockerfile:52
  - id: schedule:delete-invoice-files
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 같은 라벨의 행 번호가 두 기준점에서 다르다 — stg dockerfile:55 · prod dockerfile:57. prod 에만 있는 samsung 라벨 2개가 뒤 행을 밀었다
    anchors:
      - insuniverse-server/apps/api/dockerfile:55
      - insuniverse-server/apps/api/dockerfile:57
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:55
      - prod:insuniverse-server/apps/api/dockerfile:57
  - id: schedule:delete-treat
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:47
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:47
      - prod:insuniverse-server/apps/api/dockerfile:47
  - id: schedule:disable-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:48
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:48
      - prod:insuniverse-server/apps/api/dockerfile:48
  - id: schedule:expired-money
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 같은 라벨의 행 번호가 두 기준점에서 다르다 — stg dockerfile:54 · prod dockerfile:56. prod 에만 있는 samsung 라벨 2개가 뒤 행을 밀었다
    anchors:
      - insuniverse-server/apps/api/dockerfile:54
      - insuniverse-server/apps/api/dockerfile:56
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:54
      - prod:insuniverse-server/apps/api/dockerfile:56
  - id: schedule:fax-status
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 같은 라벨의 행 번호가 두 기준점에서 다르다 — stg dockerfile:56 · prod dockerfile:58. prod 에만 있는 samsung 라벨 2개가 뒤 행을 밀었다
    anchors:
      - insuniverse-server/apps/api/dockerfile:56
      - insuniverse-server/apps/api/dockerfile:58
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:56
      - prod:insuniverse-server/apps/api/dockerfile:58
  - id: schedule:push.scheduler
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: API 프로세스 기동 여부가 저장소 밖. 이 스케줄러는 SCHEDULER_TYPE 게이트가 없어(variants 0개) CI 주입값으로 활성을 확인할 경로 자체가 부재하며, 후보 인덱스가 assignment_state=pending 으로 남긴 칸을 이 문서가 conditional-unknown 으로 닫는다
    limitations:
      - 주기 선언의 형태가 다른 15종과 다르다 — 주석이 아니라 @Cron 데코레이터가 EVERY_HOUR (Asia/Seoul) 를 기계 판독 가능하게 넘긴다 (apps/api/src/modules/push/push.scheduler.ts:15)
    anchors:
      - insuniverse-server/apps/api/src/modules/push/push.scheduler.ts
    anchors_qualified:
      - insuniverse-server/apps/api/src/modules/push/push.scheduler.ts
  - id: schedule:regular-agency-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:43
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:43
      - prod:insuniverse-server/apps/api/dockerfile:43
  - id: schedule:regular-subscription
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:42
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:42
      - prod:insuniverse-server/apps/api/dockerfile:42
  - id: schedule:sales-statistics
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:53
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:53
      - prod:insuniverse-server/apps/api/dockerfile:53
  - id: schedule:samsung-s2-report
    status: conditional-unknown
    evidence: [A-scheduler, B-commit]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    limitations:
      - 앵커가 미동결 prod 기준점 2d3b238e 에만 존재한다 — 활성은 물론 선언의 현재 정합조차 관측할 동결 기준점이 없다
      - 소스에 동작주기 주석이 없다 — 의도 주기를 말하는 문장이 저장소에 부재한다 (apps/api/src/schedules/samsung-s2-report.schedule.ts)
    anchors:
      - insuniverse-server/apps/api/dockerfile:54
      - insuniverse-server/apps/api/dockerfile:55
    anchors_qualified:
      - prod:insuniverse-server/apps/api/dockerfile:55
      - prod:insuniverse-server/apps/api/dockerfile:54
  - id: schedule:settlement-agency
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:49
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:49
      - prod:insuniverse-server/apps/api/dockerfile:49
  - id: schedule:settlement-client
    status: conditional-unknown
    evidence: [A-scheduler, A-comment]
    unknown_reason: EventBridge 규칙·실 task-def 미확보 (회부 3). SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
    anchors:
      - insuniverse-server/apps/api/dockerfile:50
    anchors_qualified:
      - stg:insuniverse-server/apps/api/dockerfile:50
      - prod:insuniverse-server/apps/api/dockerfile:50
---

# 스케줄러 런타임 토폴로지 — 선언 상태와 활성 판정

이 문서는 두 가지를 확정한다 — 이 저장소가 **선언한** 스케줄러 편성 전수와, 그 편성이 실제로
도는지에 대한 저장소의 **판정 가능 범위**다. 두 축은 서로 다른 정책 id 로 쪼개져 있다.
선언 축은 컨테이너 진입점이 인정하는 라벨 하나가 정책 하나이고, 활성 축은 스케줄러 하나가
정책 하나다. 한 축의 판정이 바뀌어도 다른 축을 끌고 가지 않는다.

담당 문서 배분·선언 상태·게이트 유무는 아래 배치표가 지고, 판정의 정본은 문서가 아니라
`docs/_meta/index/schedules.yaml` 과 `docs/_meta/index/policy-candidates.runtime.jsonl` 이다.
이 문서가 그 두 인덱스에 **더하는** 판정은 인프로세스 스케줄러 한 칸뿐이며, 나머지는 승계다.

## 스케줄러 배치표

첫 열은 `docs/_meta/index/schedules.yaml` 의 `schedulers` 키를 그대로 옮긴 것이다. 이 표는
자기 총수를 주장하지 않는다 — 대조 상대가 인덱스이고 게이트가 그 대조를 돌린다.

`선언 라벨` 열이 한 칸에 라벨 두 개를 담는 행이 있다. **스케줄러 종수와 선언 라벨 수는 같은
집합이 아니다** — 한 스케줄러가 라벨 두 개를 기여하기도 하고, 라벨을 하나도 기여하지 않기도
한다. 후자가 `게이트 유무` 열의 유일한 미스핏이며, 그 칸이 이 문서가 인덱스에 더하는 판정의
자리다.

| 스케줄러 | 선언 라벨 | 담당 문서 | 선언 상태 | 게이트 유무 | 활성 판정 |
|---|---|---|---|---|---|
| `alimtalk-status` | `alimtalk-status` | `docs/05-schedules/03-monitoring.md` | `declared-both` | 있음 | `conditional-unknown` |
| `analysis-stall` | `analysis-stall` | `docs/05-schedules/03-monitoring.md` | `declared-both` | 있음 | `conditional-unknown` |
| `analysis-status` | `analysis-status` | `docs/05-schedules/03-monitoring.md` | `declared-both` | 있음 | `conditional-unknown` |
| `delete-analysis` | `delete-analysis` | `docs/05-schedules/01-retention.md` | `declared-both` | 있음 | `conditional-unknown` |
| `delete-fc` | `delete-fc` | `docs/05-schedules/01-retention.md` | `declared-both` | 있음 | `conditional-unknown` |
| `delete-invoice-files` | `delete-invoice-files` | `docs/05-schedules/01-retention.md` | `declared-both` | 있음 | `conditional-unknown` |
| `delete-treat` | `delete-treat` | `docs/05-schedules/01-retention.md` | `declared-both` | 있음 | `conditional-unknown` |
| `disable-subscription` | `disable-subscription` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |
| `expired-money` | `expired-money` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |
| `fax-status` | `fax-status` | `docs/05-schedules/03-monitoring.md` | `declared-both` | 있음 | `conditional-unknown` |
| `push.scheduler` | — | `docs/06-vendors/04-messaging.md` | `source-only` | 없음 | `conditional-unknown` |
| `regular-agency-subscription` | `regular-agency-subscription` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |
| `regular-subscription` | `regular-subscription` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |
| `sales-statistics` | `sales-statistics` | `docs/05-schedules/04-runtime-topology.md` | `declared-both` | 있음 | `conditional-unknown` |
| `samsung-s2-report` | `samsung-s2-report-final` · `samsung-s2-report-preview` | `docs/05-schedules/04-runtime-topology.md` | `declared-prod-only` | 있음 | `conditional-unknown` |
| `settlement-agency` | `settlement-agency` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |
| `settlement-client` | `settlement-client` | `docs/05-schedules/02-billing-cycles.md` | `declared-both` | 있음 | `conditional-unknown` |

`활성 판정` 열의 값은 프론트매터 `schedule:` 정책의 `status` 와 같은 값이며 게이트가 두 값을
행 단위로 조인한다. 표만 고치고 정책을 두면 그 조인이 떨어진다.

## 정책 (기획)

**이 절에는 정책 블록이 없다. 그것이 이 창의 산출이 아니라 이 창의 관측이다.**

배치의 정본은 `.claude/meta/05-final-spec.md` §3 이고 `docs/_meta/template-config.yaml` 의
`statuses` 가 그 전사다. 그 표에서 본문에 놓일 수 있는 상태는 그 주장이 동결 기준점에서
증명되는 것뿐이다. 지금 이 문서의 정책 중 그 조건을 만족하는 것은 하나도 없다 — 후보
인덱스의 `axis: schedule` 전 행이 `reachability.deployment_evidence: false` 이고, 배포
스케줄러는 `status_basis: gate-value-unknown` 이다. 정본 어휘의 `active-prod` 는 *prod 도달*과
*게이트 부재 또는 활성* 두 다리를 함께 요구하는데 어느 쪽도 서지 않는다.

그래서 선언 축도 활성 축도 전건 `conditional-unknown` 이고 전건 `## 부록` 으로 격리된다.
**이것은 판정을 미룬 것이 아니라 판정 근거가 저장소 안에 없다는 관측이다.** 근거가 서면
같은 게이트가 승격을 자동으로 허용하도록 판정 조건을 기계로 적어 두었으므로, 이 절이
채워지는 시점은 사람의 결심이 아니라 기준점 동결과 도달 증거가 정한다.

## 강제 지점 (개발)

정책 내용을 다시 쓰지 않는다. 각 정책이 저장소 안 **어디에서** 관측되는가와 그 지점이 어떤
기제인가만 적는다. 배치가 부록인 정책도 이 절에 있어야 한다 — 이 절의 id 집합은 배치와
무관하게 프론트매터 전체와 결속돼 있다.

**선언 축 — 컨테이너 진입점 분기.**

### declaration:alimtalk-status

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:44` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:analysis-stall

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:46` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:analysis-status

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:45` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:delete-analysis

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:51` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:delete-fc

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:52` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:delete-invoice-files

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:55` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다 — 행 번호는 서로 다르다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:delete-treat

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:47` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:disable-subscription

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:48` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:expired-money

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:54` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다 — 행 번호는 서로 다르다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:fax-status

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:56` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다 — 행 번호는 서로 다르다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:push.scheduler

- 강제 방식: 애플리케이션 내부 등록. `insuniverse-server/apps/api/src/modules/push/push.scheduler.ts` 의 `@Cron` 데코레이터가 API 프로세스 안에서 이 배치를 등록한다.
- 게이트: 없음. `RUN_MODE` · `SCHEDULER_TYPE` 어느 것도 이 배치에 걸리지 않으므로 CI 주입값으로 도달을 확인할 경로가 부재한다.
- 기준점: 동결 stg `4d798f55` 트리에서 해석된다.
- 선언 상태: `source-only` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:regular-agency-subscription

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:43` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:regular-subscription

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:42` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:sales-statistics

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:53` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:samsung-s2-report-final

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:55` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다 (인자 `final`).
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 미동결 prod `2d3b238e` 에서만 해석된다. 동결 stg 트리에는 이 라벨이 없다.
- 선언 상태: `declared-prod-only` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:samsung-s2-report-preview

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:54` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다 (인자 `preview`).
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE` · `SAMSUNG_S2_REPORT_PREVIEW_RECIPIENTS`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 미동결 prod `2d3b238e` 에서만 해석된다. 동결 stg 트리에는 이 라벨이 없다.
- 선언 상태: `declared-prod-only` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:settlement-agency

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:49` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

### declaration:settlement-client

- 강제 방식: 컨테이너 진입점 분기. `insuniverse-server/apps/api/dockerfile:50` 의 `case "$SCHEDULER_TYPE"` 분기 하나가 이 라벨이다.
- 게이트: `RUN_MODE` · `SCHEDULER_TYPE`. 두 값 모두 주입돼야 이 분기에 닿는다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 기준점: 동결 stg `4d798f55` 와 미동결 prod `2d3b238e` 양쪽에서 해석된다.
- 선언 상태: `declared-both` — 인덱스 `docs/_meta/index/schedules.yaml` 의 같은 스케줄러 키에서 승계했다.

**활성 축 — 저장소에 강제 지점이 없는 판정.**

### schedule:alimtalk-status

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:44`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `5분 (참고 : 유저측에 알림톡목록이 있을 경우 조금 더 느슨하게 가도 됨)` (`apps/api/src/schedules/alimtalk-status.schedule.ts:8`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:analysis-stall

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:46`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `10분 (AWS EventBridge)` (`apps/api/src/schedules/analysis-stall.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:analysis-status

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:45`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `5분 (AWS EventBridge)` (`apps/api/src/schedules/analysis-status.schedule.ts:10`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:delete-analysis

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:51`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `확인필요` (`apps/api/src/schedules/delete-analysis.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:delete-fc

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:52`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `확인필요` (`apps/api/src/schedules/delete-fc.schdule.ts:8`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:delete-invoice-files

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:55` · `insuniverse-server/apps/api/dockerfile:57`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 23:59:59 (한국시간 기준)` (`apps/api/src/schedules/delete-invoice-files.schedule.ts:12`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:delete-treat

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:47`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 오전 6시` (`apps/api/src/schedules/delete-treat.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:disable-subscription

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:48`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 자정` (`apps/api/src/schedules/disable-subscription.schedule.ts:8`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:expired-money

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:54` · `insuniverse-server/apps/api/dockerfile:56`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 자정 (AWS EventBridge에서 설정)` (`apps/api/src/schedules/expired-money.schedule.ts:8`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:fax-status

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:56` · `insuniverse-server/apps/api/dockerfile:58`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `1분 (AWS EventBridge에서 설정)` (`apps/api/src/schedules/fax-status.schedule.ts:8`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:push.scheduler

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/src/modules/push/push.scheduler.ts`.
- 강제 방식: 없음. 이 배치는 API 프로세스가 기동해 있는 동안 프로세스 안에서 등록되므로, 판정 입력은 배포 선언이 아니라 프로세스 기동 사실이며 그것도 저장소 밖이다.
- 소스가 선언한 의도 주기: `EVERY_HOUR (Asia/Seoul)` — 주석이 아니라 `apps/api/src/modules/push/push.scheduler.ts:15` 의 @Cron 데코레이터가 등록 시점에 넘기는 인자다. **의도 선언을 넘어 실제 등록값이다.**
- 후보 인덱스: `S2` · `deployment-unproven` · `assignment_state: pending`.

### schedule:regular-agency-subscription

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:43`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 아침 9시 / 저녁 18시` (`apps/api/src/schedules/regular-agency-subscription.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:regular-subscription

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:42`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매일 아침 9시 / 저녁 18시` (`apps/api/src/schedules/regular-subscription.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:sales-statistics

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:53`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `오후 7시` (`apps/api/src/schedules/sales-statistics.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:samsung-s2-report

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:54` · `insuniverse-server/apps/api/dockerfile:55`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: 없음. `apps/api/src/schedules/samsung-s2-report.schedule.ts` 에 동작주기 주석이 부재한다.
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:settlement-agency

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:49`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매월 1일 자정` (`apps/api/src/schedules/settlement-agency.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

### schedule:settlement-client

- 판정 대상: 이 스케줄러가 지금 도는가. 근거 앵커는 `insuniverse-server/apps/api/dockerfile:50`.
- 강제 방식: 없음. 활성 조건은 EventBridge 규칙과 ECS task-def 안에 있고 둘 다 이 저장소의 스캔 우주 밖이다. SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다. 미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.
- 소스가 선언한 의도 주기: `매월 1일 자정` (`apps/api/src/schedules/settlement-client.schedule.ts:9`). **의도 선언이며 활성 근거가 아니다.**
- 후보 인덱스: `S1` · `gate-value-unknown` · `assignment_state: assigned`.

## 적용 범위 (actor × 서비스)

스케줄러 정책에는 actor 표면이 없다. 이 문서의 정책은 사람이 어떤 화면에서 무엇을 할 수
있는가가 아니라 **서버 프로세스의 런타임 편성**에 대한 사실이며, 그 사실은 어느 actor 의
요청 경로에도 등장하지 않는다. 그래서 actor 여섯 열은 전건 `—` 이고 그것이 빈 칸이 아니라
관측된 부재다. 서비스 축에서는 `server` 하나만 `적용` 이다 — `site` 와 `admin` 은 이 편성을
호출하지도 관측하지도 않는다.

| 정책 id | 비회원 | 회원 | 기업담당자 | 대리점 | 관리자 | 영업관리자 | server | site | admin |
|---|---|---|---|---|---|---|---|---|---|
| declaration:alimtalk-status | — | — | — | — | — | — | 적용 | — | — |
| declaration:analysis-stall | — | — | — | — | — | — | 적용 | — | — |
| declaration:analysis-status | — | — | — | — | — | — | 적용 | — | — |
| declaration:delete-analysis | — | — | — | — | — | — | 적용 | — | — |
| declaration:delete-fc | — | — | — | — | — | — | 적용 | — | — |
| declaration:delete-invoice-files | — | — | — | — | — | — | 적용 | — | — |
| declaration:delete-treat | — | — | — | — | — | — | 적용 | — | — |
| declaration:disable-subscription | — | — | — | — | — | — | 적용 | — | — |
| declaration:expired-money | — | — | — | — | — | — | 적용 | — | — |
| declaration:fax-status | — | — | — | — | — | — | 적용 | — | — |
| declaration:push.scheduler | — | — | — | — | — | — | 적용 | — | — |
| declaration:regular-agency-subscription | — | — | — | — | — | — | 적용 | — | — |
| declaration:regular-subscription | — | — | — | — | — | — | 적용 | — | — |
| declaration:sales-statistics | — | — | — | — | — | — | 적용 | — | — |
| declaration:samsung-s2-report-final | — | — | — | — | — | — | 적용 | — | — |
| declaration:samsung-s2-report-preview | — | — | — | — | — | — | 적용 | — | — |
| declaration:settlement-agency | — | — | — | — | — | — | 적용 | — | — |
| declaration:settlement-client | — | — | — | — | — | — | 적용 | — | — |
| schedule:alimtalk-status | — | — | — | — | — | — | 적용 | — | — |
| schedule:analysis-stall | — | — | — | — | — | — | 적용 | — | — |
| schedule:analysis-status | — | — | — | — | — | — | 적용 | — | — |
| schedule:delete-analysis | — | — | — | — | — | — | 적용 | — | — |
| schedule:delete-fc | — | — | — | — | — | — | 적용 | — | — |
| schedule:delete-invoice-files | — | — | — | — | — | — | 적용 | — | — |
| schedule:delete-treat | — | — | — | — | — | — | 적용 | — | — |
| schedule:disable-subscription | — | — | — | — | — | — | 적용 | — | — |
| schedule:expired-money | — | — | — | — | — | — | 적용 | — | — |
| schedule:fax-status | — | — | — | — | — | — | 적용 | — | — |
| schedule:push.scheduler | — | — | — | — | — | — | 적용 | — | — |
| schedule:regular-agency-subscription | — | — | — | — | — | — | 적용 | — | — |
| schedule:regular-subscription | — | — | — | — | — | — | 적용 | — | — |
| schedule:sales-statistics | — | — | — | — | — | — | 적용 | — | — |
| schedule:samsung-s2-report | — | — | — | — | — | — | 적용 | — | — |
| schedule:settlement-agency | — | — | — | — | — | — | 적용 | — | — |
| schedule:settlement-client | — | — | — | — | — | — | 적용 | — | — |

## 예외·폴백

선언 축의 폴백은 컨테이너 진입점이 직접 적어 두었다 — `RUN_MODE` 가 `scheduler` 가 아니면
`case` 블록 전체를 건너뛰고 API 본체를 기동한다. 활성 축은 판정 자체가 미도래이므로 예외가
아니라 **판정 부재**이며, 그 사실의 확인 근거를 같은 표에 적는다.

| 정책 id | 예외 조건 | 폴백 동작 | 확인 근거 |
|---|---|---|---|
| declaration:alimtalk-status | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:44` 이 속한 CMD 블록 |
| declaration:alimtalk-status | `SCHEDULER_TYPE` 값이 `alimtalk-status` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:44` |
| declaration:analysis-stall | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:46` 이 속한 CMD 블록 |
| declaration:analysis-stall | `SCHEDULER_TYPE` 값이 `analysis-stall` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:46` |
| declaration:analysis-status | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:45` 이 속한 CMD 블록 |
| declaration:analysis-status | `SCHEDULER_TYPE` 값이 `analysis-status` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:45` |
| declaration:delete-analysis | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:51` 이 속한 CMD 블록 |
| declaration:delete-analysis | `SCHEDULER_TYPE` 값이 `delete-analysis` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:51` |
| declaration:delete-fc | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:52` 이 속한 CMD 블록 |
| declaration:delete-fc | `SCHEDULER_TYPE` 값이 `delete-fc` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:52` |
| declaration:delete-invoice-files | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:55` 이 속한 CMD 블록 |
| declaration:delete-invoice-files | `SCHEDULER_TYPE` 값이 `delete-invoice-files` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:55` · `insuniverse-server/apps/api/dockerfile:57` |
| declaration:delete-treat | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:47` 이 속한 CMD 블록 |
| declaration:delete-treat | `SCHEDULER_TYPE` 값이 `delete-treat` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:47` |
| declaration:disable-subscription | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:48` 이 속한 CMD 블록 |
| declaration:disable-subscription | `SCHEDULER_TYPE` 값이 `disable-subscription` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:48` |
| declaration:expired-money | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:54` 이 속한 CMD 블록 |
| declaration:expired-money | `SCHEDULER_TYPE` 값이 `expired-money` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:54` · `insuniverse-server/apps/api/dockerfile:56` |
| declaration:fax-status | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:56` 이 속한 CMD 블록 |
| declaration:fax-status | `SCHEDULER_TYPE` 값이 `fax-status` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:56` · `insuniverse-server/apps/api/dockerfile:58` |
| declaration:push.scheduler | API 프로세스가 기동해 있지 않음 | 이 배치의 등록 자체가 일어나지 않는다. 되살릴 대체 경로가 저장소 안에 없다 | `insuniverse-server/apps/api/src/modules/push/push.scheduler.ts` |
| declaration:push.scheduler | `SCHEDULER_TYPE` 분기 부재 | 컨테이너 진입점이 이 배치를 알지 못한다 — 라벨로 부를 수 있는 경로가 없다 | `insuniverse-server/apps/api/dockerfile` case 목록에 이 이름이 없음 |
| declaration:regular-agency-subscription | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:43` 이 속한 CMD 블록 |
| declaration:regular-agency-subscription | `SCHEDULER_TYPE` 값이 `regular-agency-subscription` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:43` |
| declaration:regular-subscription | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:42` 이 속한 CMD 블록 |
| declaration:regular-subscription | `SCHEDULER_TYPE` 값이 `regular-subscription` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:42` |
| declaration:sales-statistics | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:53` 이 속한 CMD 블록 |
| declaration:sales-statistics | `SCHEDULER_TYPE` 값이 `sales-statistics` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:53` |
| declaration:samsung-s2-report-final | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:55` 이 속한 CMD 블록 |
| declaration:samsung-s2-report-final | `SCHEDULER_TYPE` 값이 `samsung-s2-report-final` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:55` |
| declaration:samsung-s2-report-preview | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:54` 이 속한 CMD 블록 |
| declaration:samsung-s2-report-preview | `SCHEDULER_TYPE` 값이 `samsung-s2-report-preview` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:54` |
| declaration:settlement-agency | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:49` 이 속한 CMD 블록 |
| declaration:settlement-agency | `SCHEDULER_TYPE` 값이 `settlement-agency` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:49` |
| declaration:settlement-client | `RUN_MODE` 가 `scheduler` 가 아님 | `case` 블록을 건너뛰고 `dist/apps/api/src/main.js` 를 기동한다 | `insuniverse-server/apps/api/dockerfile:50` 이 속한 CMD 블록 |
| declaration:settlement-client | `SCHEDULER_TYPE` 값이 `settlement-client` 이 아님 | 이 분기는 선택되지 않는다. `esac` 까지 도달하면 컨테이너가 아무 배치도 잡지 않고 종료한다 | `insuniverse-server/apps/api/dockerfile:50` |
| schedule:alimtalk-status | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:analysis-stall | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:analysis-status | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:delete-analysis | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:delete-fc | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:delete-invoice-files | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:delete-treat | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:disable-subscription | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:expired-money | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:fax-status | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:push.scheduler | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `deployment-unproven` · `API 프로세스 기동 여부가 저장소 밖` |
| schedule:regular-agency-subscription | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:regular-subscription | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:sales-statistics | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:samsung-s2-report | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:settlement-agency | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |
| schedule:settlement-client | 활성 판정에 필요한 입력이 저장소 밖에 있음 | 판정을 내리지 않고 `conditional-unknown` 으로 남긴다. 추정으로 대체하지 않는다 | `gate-value-unknown` · `EventBridge 규칙·실 task-def 미확보 (회부 3)` |

## 부록

이 절의 정책은 **현행 유효성이 판정되지 않아** 본문에서 격리한다 — 두 축 모두 판정에 필요한
입력이 저장소 밖에 있고, 그 상태로 본문에 두면 독자가 지금 걸려 있는 규칙으로 읽는다.

**여기 실린 어떤 정책도 배치의 활성을 부정하지 않는다.** 미판정과 부정은 다르다.
저장소는 활성을 긍정할 근거도 부정할 근거도 갖고 있지 않으며, 특히 삭제 배치 네 종은 데이터
보존 정책에 직접 걸리므로 어느 방향으로든 단정하면 위험하다.

**선언 축.**

컨테이너 진입점이 인정하는 라벨 하나가 정책 하나다. status 는 전건 같지만 `unknown_reason`
이 셋으로 갈리며, 그 차이가 어느 축이 먼저 풀리는지를 말한다 — prod 기준점이 동결되고 도달
증거가 서면 선언 축만 본문으로 올라간다.

### declaration:alimtalk-status

`SCHEDULER_TYPE` 에 `alimtalk-status` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:analysis-stall

`SCHEDULER_TYPE` 에 `analysis-stall` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:analysis-status

`SCHEDULER_TYPE` 에 `analysis-status` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:delete-analysis

`SCHEDULER_TYPE` 에 `delete-analysis` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:delete-fc

`SCHEDULER_TYPE` 에 `delete-fc` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:delete-invoice-files

`SCHEDULER_TYPE` 에 `delete-invoice-files` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:delete-treat

`SCHEDULER_TYPE` 에 `delete-treat` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:disable-subscription

`SCHEDULER_TYPE` 에 `disable-subscription` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:expired-money

`SCHEDULER_TYPE` 에 `expired-money` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:fax-status

`SCHEDULER_TYPE` 에 `fax-status` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:push.scheduler

배포 파이프라인이 이 배치에 이름을 붙이지 않았다. 컨테이너 진입점의 라벨 목록에 이 이름이
없고, 대신 API 본체가 뜰 때 애플리케이션 안에서 스스로 등록된다. 그래서 *배포로 선언됐는가*
라는 질문 자체가 이 배치에는 성립하지 않고, 인덱스도 그 사실을 `source-only` 로 적었다.

소스가 말하는 주기는 `EVERY_HOUR (Asia/Seoul)` 이다. 이것은 코드가 등록 시점에 넘기는 값이므로 앞의
배포 라벨들보다 강한 근거지만, 그 코드가 지금 어느 서버에서 살아 있는지는 저장소가 알지
못한다.

### declaration:regular-agency-subscription

`SCHEDULER_TYPE` 에 `regular-agency-subscription` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:regular-subscription

`SCHEDULER_TYPE` 에 `regular-subscription` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:sales-statistics

`SCHEDULER_TYPE` 에 `sales-statistics` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:samsung-s2-report-final

`SCHEDULER_TYPE` 에 `samsung-s2-report-final` 이 들어오면 컨테이너가 이 배치를 잡는다. 같은 소스를 인자 `final` 로 부르는 분기다.
이 선언은 prod 스냅샷에만 있다. 동결 stg 기준점의 라벨 목록에는 이 이름이 없으며,
두 환경이 지금도 그렇게 갈려 있는지는 prod 기준점이 동결 대상이 아니라 관측할 수 없다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:samsung-s2-report-preview

`SCHEDULER_TYPE` 에 `samsung-s2-report-preview` 이 들어오면 컨테이너가 이 배치를 잡는다. 같은 소스를 인자 `preview` 로 부르는 분기다.
이 선언은 prod 스냅샷에만 있다. 동결 stg 기준점의 라벨 목록에는 이 이름이 없으며,
두 환경이 지금도 그렇게 갈려 있는지는 prod 기준점이 동결 대상이 아니라 관측할 수 없다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` · `SAMSUNG_S2_REPORT_PREVIEW_RECIPIENTS` 다.
SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:settlement-agency

`SCHEDULER_TYPE` 에 `settlement-agency` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

### declaration:settlement-client

`SCHEDULER_TYPE` 에 `settlement-client` 이 들어오면 컨테이너가 이 배치를 잡는다.
이 선언은 동결 stg 기준점과 prod 스냅샷 양쪽에서 같은 형태로 해석된다.

게이트는 `RUN_MODE` · `SCHEDULER_TYPE` 다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

**활성 축.**

스케줄러 하나가 정책 하나이며 id 는 후보 인덱스의 id 를 그대로 쓴다. 소스 주석이 말하는
주기는 **의도 선언**이다 — 저장소가 그렇게 돌리려 했다는 기록이지, 지금 그렇게 돌고 있다는
관측이 아니다. 그 둘을 같은 것으로 읽으면 이 문서가 하지 않은 판정을 한 것이 된다.

의도 주기조차 적히지 않은 자리도 있다. 그런 칸은 `확인필요` 라고 소스가 직접 적었거나 주석
자체가 부재하며, 어느 쪽이든 이 문서는 그 부재를 값으로 옮겨 적는다.

### schedule:alimtalk-status

소스 주석이 의도 주기를 `5분 (참고 : 유저측에 알림톡목록이 있을 경우 조금 더 느슨하게 가도 됨)` 로 적었다 (`apps/api/src/schedules/alimtalk-status.schedule.ts:8`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:analysis-stall

소스 주석이 의도 주기를 `10분 (AWS EventBridge)` 로 적었다 (`apps/api/src/schedules/analysis-stall.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:analysis-status

소스 주석이 의도 주기를 `5분 (AWS EventBridge)` 로 적었다 (`apps/api/src/schedules/analysis-status.schedule.ts:10`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:delete-analysis

소스 주석이 동작주기를 `확인필요` 로 적었다 (`apps/api/src/schedules/delete-analysis.schedule.ts:9`). 저장소는 이 배치의
의도 주기조차 확정하지 못한 상태이며, 그 사실 자체가 이 문서가 옮겨 적어야 할 관측이다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:delete-fc

소스 주석이 동작주기를 `확인필요` 로 적었다 (`apps/api/src/schedules/delete-fc.schdule.ts:8`). 저장소는 이 배치의
의도 주기조차 확정하지 못한 상태이며, 그 사실 자체가 이 문서가 옮겨 적어야 할 관측이다.

**이 배치의 진입 함수는 호출되지 않는다.** 두 기준점 모두에서 `apps/api/src/schedules/delete-fc.schdule.ts` 최상위는 `async () => { … };` 함수 **표현식**이고 그것을 부르는 구문이 없다.
다른 15종의 배치 소스는 같은 자리에 `})();` 를 둔다. 따라서 진입점 분기가 이 라벨을 골라 파일을
실행하더라도 `deleteFc()` 에 도달하지 않는다. 이것은 **활성 미판정과 다른 축이다** — 활성은
저장소 밖 입력이 없어 판정하지 않는 것이고, 이 항목은 저장소 안에서 관측된 사실이다.
탈퇴 회원 데이터 삭제가 수행된다고 읽으면 보존 정책 판단이 틀린다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:delete-invoice-files

소스 주석이 의도 주기를 `매일 23:59:59 (한국시간 기준)` 로 적었다 (`apps/api/src/schedules/delete-invoice-files.schedule.ts:12`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:delete-treat

소스 주석이 의도 주기를 `매일 오전 6시` 로 적었다 (`apps/api/src/schedules/delete-treat.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:disable-subscription

소스 주석이 의도 주기를 `매일 자정` 로 적었다 (`apps/api/src/schedules/disable-subscription.schedule.ts:8`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:expired-money

소스 주석이 의도 주기를 `매일 자정 (AWS EventBridge에서 설정)` 로 적었다 (`apps/api/src/schedules/expired-money.schedule.ts:8`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:fax-status

소스 주석이 의도 주기를 `1분 (AWS EventBridge에서 설정)` 로 적었다 (`apps/api/src/schedules/fax-status.schedule.ts:8`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:push.scheduler

이 배치의 주기는 주석이 아니라 데코레이터가 선언한다 — `apps/api/src/modules/push/push.scheduler.ts:15` 의 @Cron 이
`EVERY_HOUR (Asia/Seoul)` 를 넘긴다. 앞의 배포 라벨 15종이 주석으로 의도를 적은 것과 달리 이 값은 코드가 등록 시점에 실제로 넘기는 인자이므로 더 강한 근거다. 다만 지금 어느 서버에서 그 등록이 살아 있는지는 저장소가 알지 못한다.

활성 조건은 API 프로세스의 기동 여부다. 배포 라벨을 거치지 않으므로 CI 주입값을 봐도
답이 나오지 않으며, 후보 인덱스는 이 칸을 판정하지 않고 `pending` 으로 남겼다.
**이 문서가 인덱스에 더하는 판정은 이 한 칸이다** — 게이트 부재를 사유로 병기해
`conditional-unknown` 으로 닫는다.

후보 인덱스 기록: `S2` · `deployment-unproven` · `reachability.grade=source-declared` · `deployment_evidence=false`.

### schedule:regular-agency-subscription

소스 주석이 의도 주기를 `매일 아침 9시 / 저녁 18시` 로 적었다 (`apps/api/src/schedules/regular-agency-subscription.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:regular-subscription

소스 주석이 의도 주기를 `매일 아침 9시 / 저녁 18시` 로 적었다 (`apps/api/src/schedules/regular-subscription.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:sales-statistics

소스 주석이 의도 주기를 `오후 7시` 로 적었다 (`apps/api/src/schedules/sales-statistics.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:samsung-s2-report

`apps/api/src/schedules/samsung-s2-report.schedule.ts` 에는 동작주기를 말하는 주석이 없다. 이 배치의 의도 주기는 저장소가 말하지
않으며, 그 부재를 결손이 아니라 관측된 사실로 적는다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 미동결 prod 2d3b238e 의 .github/workflows/api.yml TYPES 17종에만 있다 — 동결 stg 4d798f55 의 15종에 이 라벨이 없는 것은 저장소 관측이다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:settlement-agency

소스 주석이 의도 주기를 `매월 1일 자정` 로 적었다 (`apps/api/src/schedules/settlement-agency.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

### schedule:settlement-client

소스 주석이 의도 주기를 `매월 1일 자정` 로 적었다 (`apps/api/src/schedules/settlement-client.schedule.ts:9`).
이 값은 사람이 쓴 의도 선언이고, 기계가 읽을 cron 표현은 저장소 어디에도 없다.

활성 조건은 `RUN_MODE` · `SCHEDULER_TYPE` 두 값의 운영 설정에 있다.
SCHEDULER_TYPE 주입값은 저장소 안에 있다 — .github/workflows/api.yml 의 TYPES 가 동결 stg 4d798f55 에서 15종 · 미동결 prod 2d3b238e 에서 17종을 이름으로 열거하고 두 기준점 모두 이 라벨을 담는다.
미확인인 것은 그 등록이 실제 계정에 반영됐는지와 EventBridge 규칙이 그 패밀리를 호출하는지다.

후보 인덱스 기록: `S1` · `gate-value-unknown` · `reachability.grade=deployment-declared` · `deployment_evidence=false`.

## 연혁

릴리스 태그가 존재하지 않는다. 릴리스 열은 `—` 로 두고 커밋 SHA 로 추적한다. 행은
`docs/_meta/index/commits.server.jsonl` 이 스케줄 경로 접촉으로 기록한 커밋 집합 안에서
**편성이 바뀐 시점**만 골랐다. 그 집합 전체를 싣지 않는다.

| 릴리스 | 날짜 | SHA | 변경 요약 |
|---|---|---|---|
| — | 2024-12-16 | `c67fdf2f` | 컨테이너 진입점에 `SCHEDULER_TYPE` 분기 신설 — 배포 스케줄러 편성의 기점 |
| — | 2025-01-10 | `d2b5b8d5` | 진입점 라벨 목록에 알림톡 상태 배치 추가 |
| — | 2025-03-25 | `0a036d0d` | 분석결과 보존기간 삭제 배치 신설 (`delete-analysis`) |
| — | 2025-03-28 | `a2b3ba40` | 탈퇴 회원 데이터 삭제 배치 신설 (`delete-fc`) |
| — | 2025-03-31 | `6ca55059` | 기업 정기구독 배치 신설 (`regular-agency-subscription`) |
| — | 2025-04-02 | `48ad3877` | 정산 배치 2종 개명 — 진입점 라벨을 `agency-settlement` 에서 `settle-agency` · `settle-client` 로 교체 |
| — | 2025-04-02 | `9d653454` | 같은 날 2분 뒤 재개명 — 진입점 라벨이 `settlement-agency` · `settlement-client` 로 확정. 현재 라벨의 기원 |
| — | 2025-06-17 | `f8952fd0` | 영업대리점 통계 배치 교체 (`sales-statistics`) — 진입점 라벨 동반 변경 |
| — | 2025-10-30 | `2ec78694` | `push.scheduler` 를 인프로세스 `@Cron` 으로 신설 — 진입점 라벨 없음 |
| — | 2025-11-27 | `d64cae43` | 유효기간 만료 머니 배치 신설 (`expired-money`) |
| — | 2025-12-11 | `0e470689` | 청구서 파일 만료 삭제 배치 신설 (`delete-invoice-files`) |
| — | 2026-05-22 | `3775e2cc` | 분석 stall 자동 종결 배치 신설 (`analysis-stall`) |
| — | 2026-07-23 | `05012ffb` | `samsung-s2-report` 소스·서비스 신설 — 이 커밋은 dockerfile 을 건드리지 않는다 |

**prod 진입점의 samsung 라벨 2개는 이 표에 행이 없다.** 그 라벨을 넣은 커밋은 `e5c14c0b`
(2026-07-23 `feat(report): add dedicated Samsung report tasks`) 이고, 그 SHA 는
`docs/_meta/index/commits.server.jsonl` 에 **없다**(실측 0건). 이 표의 행은 그 인덱스가 스케줄
경로 접촉으로 기록한 커밋 집합 안에서만 고르므로 근거 없는 행을 만들지 않는다. 인덱스가 그
커밋을 담지 않는 사실 자체가 관측이며, 인덱스의 수집 범위는 `10-index-git` 소유라 이 창이
넓히지 않는다.
