Skip to content

feat(ci): behind 를 «재는» 주 1회 예약 워크플로 [rustjava-upstream-behind-measure-scheduled-workflow] - #31

Merged
Jun025 merged 2 commits into
mainfrom
feat/rustjava-upstream-behind-workflow
Sep 4, 2026
Merged

feat(ci): behind 를 «재는» 주 1회 예약 워크플로 [rustjava-upstream-behind-measure-scheduled-workflow]#31
Jun025 merged 2 commits into
mainfrom
feat/rustjava-upstream-behind-workflow

Conversation

@Jun025

Copy link
Copy Markdown
Owner

무엇을

.github/workflows/upstream-behind.yml1개 신설 — 주 1회 upstream 을 read-only fetch
rev-list --count 를 찍고 Job Summary + annotation 으로 보고한다. ★**.rs 0줄 · scripts/ 무접촉.**

2026-09-04 판정(PR #29 · 머지 4b91e8f8)이 트리거를 behind ≥ 20 으로 못박았는데
그 수를 «재는 주체»가 없었다git grep -lI 'rev-list --count' origin/main -- .github/ scripts/0건.

★★알림 방식 — 이 회차 결정의 «대부분» (취향이 아니라 실측)

실측판정
red선례 rust-audit.yaml 최근 20 run 중 19 failure · ★대응 티켓 «0건» · coverage 리니지도 만성 red 를 «green 으로» 끝냈다여기서 안 듣는다 ⇒ 기각
〃 부작용예약 red 는 ★main tip check-run 에 붙는다(실측 8c1238b5audit failure 7건) ⇒ 게이트③의 「착지본 green」 읽기를 흐린다
〃 ★PR 을 막는가(티켓이 확인하라 한 것)막지 않는다 — 예약 run 은 main tip sha 에 붙고 PR head 와 다르다확인 완료
이슈★이 fork 는 issues 비활성(hasIssuesEnabled: false)구조적 불가
⒝ Job Summary + annotation부작용 0 · main tip 오염 0채택

★**「⒝ 가 최선이다」가 아니라 「⒜⒞ 가 각각 무실효·불가다」가 근거다.**
⒝ 의 «수동성»은 숨기지 않는다 — 재개 조건이 그 대가를 잰다(아래).

★주기 — 주 1회(cron: "17 6 * * 1") · 선례를 «베끼지» 않았다

behind 20 도달(12개월 144커밋/51주)중앙 44일 · ★최소 9일
고른 주기7일7 < 9 라 «가장 빠른 관측 상승»보다 짧다 ⇒ 한 주기 넘게 못 놓친다
일간 기각7배 비용에 판단 가치 0(★회차보다 빨리 움직일 수 없다)

★한 번 돌려서 낸 «오늘의 값»

워크플로 본문의 그 명령을 신선한 클론에서 그대로 실행:

behind = 0 · threshold = 20 · merge-base = bd42427 · upstream HEAD = bd42427 ⇒ 임계 미만

★재개 조건

behind ≥ 207일 이상 지속됐는데 그 사이 동기 회차가 열리지 않았으면 알림 방식을 다시 연다.

세는 명령·오늘의 값은 docs/upstream-sync-approach.md §5-B ⒠ 에 박았다(★오늘 = behind 0).

경계

upstream 발신 0(remote 추가 + fetch 뿐 · permissions: contents: read) ·
자동 발권 0(임계를 넘어도 회차를 열지 않는다 — 발권은 사람) · ★임계 20 무접촉 ·
bin/healthcheck·orchestrator 무접촉 · ★S9 미개시 · 파리티 rc=0(검사기가 rust.yml 만 본다).
등재 repo ⇒ 게이트③은 --merge(스쿼시는 계보를 접는다).

jun0 added 2 commits September 5, 2026 07:15
…e-scheduled-workflow]
채택 제안 2026-09-04-upstream-sync-cadence-decision#p0 집행. 2026-09-04 판정(PR #29)이
트리거를 behind >= 20 으로 못박았으나 그 수를 재는 주체가 없었다 —
git grep -lI 'rev-list --count' origin/main -- .github/ scripts/ → 0건.
주기 = 주 1회(cron 17 6 * * 1). 선례(rust-audit 일간)를 베끼지 않고 임계 도달 속도로
정당화했다: behind 20 도달이 중앙 44일 · 최소 9일이라 7일 주기는 가장 빠른 관측 상승보다
짧아 한 주기 넘게 놓칠 수 없고, 일간은 7배 비용에 판단 가치가 0 이다(회차보다 빨리 움직일
수 없다). 정시와 rust-audit 의 00:00 슬롯을 피해 오프셋을 뒀다.
알림 = ⒝ Job Summary + annotation · 항상 green. 취향이 아니라 이 저장소 실측으로 골랐다:
⒜red 는 여기서 안 듣는다(선례 rust-audit 최근 20 run 중 19 failure 인데 대응 티켓 0건 ·
coverage 리니지도 만성 red 를 행동이 아니라 green 으로 끝냈다) 이고, 예약 red 는 main tip
check-run 에 붙어(실측 8c1238b 에 audit failure 7건) 게이트③의 「착지본 green」 읽기를
흐린다. 단 PR 은 막지 않는다 — 예약 run 은 main tip sha 에 붙고 PR head 와 다르다(확인함).
⒞이슈는 구조적으로 불가하다(이 fork 는 hasIssuesEnabled: false).
⇒ ⒝ 가 남은 것이고 그 수동성을 알고 골랐다. 재개 조건이 그 대가를 잰다 —
「behind >= 20 이 7일 이상 지속인데 회차 미개시」를 세는 명령·오늘의 값과 함께 §5-B ⒠ 에 박았다.
한 번 돌려 오늘의 값을 남겼다(워크플로 본문 명령을 신선한 클론에서 그대로 실행):
behind 0 · merge-base bd42427 = upstream HEAD ⇒ 임계 미만.
경계: upstream 발신 0(remote 추가 + fetch 뿐 · permissions contents: read) · 자동 발권 0
(임계를 넘어도 회차를 열지 않는다 — 발권은 사람) · 임계 20 무접촉(착지 판정 PR #29) ·
bin/healthcheck·orchestrator 무접촉 · scripts/ 무접촉 · .rs 0줄 · S9 미개시.
파리티 검사기는 CI_FILE 을 rust.yml 로 코드에 박아 둬 새 워크플로를 보지 않는다(rc=0 확인).
…measure-scheduled-workflow]
STATE.md 진행중 → 완료(게이트③ PR #31 · --merge · 등재 repo · 게이트② 1회차 approve ·
착지 후 workflow_dispatch 로 워크플로를 실제로 돌려 확인 — 구현 회차가 자인한 구멍이다)
+ worklog .json 게이트③ 집행 1줄(동봉 전 head 가 핀과 일치했음 · 착지 diff 에 워크플로
파일이 있어 3-a⒞ 공유 앵커를 반드시 봤고 paths 필터 0건이라 해당 없음). 코드 변경 0.
@Jun025
Jun025 merged commit b25373d into mainSep 4, 2026
10 checks passed
@Jun025
Jun025 deleted the feat/rustjava-upstream-behind-workflow branch September 4, 2026 22:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Jun025