Skip to content

docs: 파리티 락 «교차곱» 확장 판정 — 넓히지 않는다 [rustjava-dod-ci-parity-cross-product-decision] - #27

Merged
Jun025 merged 2 commits into
mainfrom
feat/rustjava-parity-cross-product-decision
Sep 4, 2026
Merged

docs: 파리티 락 «교차곱» 확장 판정 — 넓히지 않는다 [rustjava-dod-ci-parity-cross-product-decision]#27
Jun025 merged 2 commits into
mainfrom
feat/rustjava-parity-cross-product-decision

Conversation

@Jun025

Copy link
Copy Markdown
Owner

판정

채택 제안 2026-09-04-dod-ci-parity-lock#p0 에 대한 판정 회차다.
결론: 교차곱으로 넓히지 «않는다» (부분 확장 fmt@beta 만도 기각).

검사기 로직 변경 0 · .rs 0줄 · rust.yml 무접촉 · CLAUDE.md DoD 블록 무접촉.

비용 — ★먼저 쟀다(추정 0)

시나리오현행(7줄)교차곱(10줄)배수
무변경 재실행(warm)19s38s2.00×
소스 1줄 편집 후(회차가 실제로 겪는 케이스)89s326s3.66×
콜드 1회(beta 산출물 최초)+171s

제안 문면의 「두 배」는 «무변경 재실행»에서만 참이다. 지배항 = cargo +beta test --all215s
(같은 편집에서 stable cargo test --all 66s 의 3.3배).

재고 나서야 보인 비용 둘:

  1. rustfmtbeta 에 설치돼 있지 않다cargo +beta fmt 는 오늘 그대로 rc=1. 넣으면 모든 머신이 선행 설치해야 한다.
  2. 툴체인 교대 축출은 «없다»(beta 3줄 직후 stable clippy 2s · test 25s) — 「두 배」의 흔한 기전이 여기엔 없고, 대가는 시간이 아니라 디스크다(target 46G).

실익 — ★따로 쟀다

CI 에만 있는 조합 3개(비어 있지 않다): fmt@beta · wasm32 clippy@beta · test@beta.

rust.yml 이력 76 run(성공 73 · 실패 3) ★전수 분해:

runsha실패 셀실패 stepbeta 전용?
338242374410a2992a76셀 전건cargo fmt --all -- --check✗ stable 도 실패
33798515798d8af846dbeta 3셀cargo clippy --all -- -D warnings✓ — DoD 가 이미 덮는 줄
32674170282eaa56689ubuntu betacargo clippy --all -- -D warnings✓ — 같음

⇒ ★★교차곱 3개가 «새로» 잡았을 사건 = 0건 / 76 run.+237s/회차에 실익 0.

재개 조건 (세는 명령 + 오늘의 값)

rust.yml 실패 이력에 「cargo clippy --all이외의 step 이 beta 셀에서만 실패한 run」이 1건이라도 생기면 다시 연다.

오늘의 값 = 0 · 명령은 docs/upstream-sync-approach.md §4 에 있다.
★**「비용이 싸졌다」는 재개 사유가 아니다** — 실익이 0 인 동안에는 싸도 넣지 않는다.

착지 형태

등재 repo ⇒ 게이트③은 --merge(merge_strategy: merge).

…ct-decision]
채택 제안 2026-09-04-dod-ci-parity-lock#p0 에 대한 판정. 비용과 실익을 각각 실측했다.
비용(추정 0): 무변경 재실행 19s → 38s = 2.00× ↔ 소스 1줄 편집 후 89s → 326s = 3.66×.
제안 문면의 「두 배」는 무변경에서만 참이고 회차는 언제나 편집 후에 돌린다. 지배항은
cargo +beta test --all 215s(같은 편집에서 stable test 66s 의 3.3배) · 콜드 1회 +171s.
재고 나서야 보인 것 둘 — rustfmt 가 beta 에 미설치라 cargo +beta fmt 는 오늘 rc=1 이고,
툴체인 교대 축출은 없다(beta 3줄 직후 stable clippy 2s · test 25s) ⇒ 대가는 시간이 아니라
디스크다(target 46G).
실익: CI 에만 있는 조합은 3개로 비어 있지 않다(fmt@beta · wasm32 clippy@beta · test@beta).
그러나 rust.yml 이력 76 run(성공 73 · 실패 3) 전수 분해에서 그 3개가 새로 잡았을 사건은
0건이다 — 이 저장소의 beta 전용 실패는 전건 cargo clippy --all 이고 DoD 가 이미 +beta 로
덮는다. 나머지 1건(fmt)은 6셀 전건 실패라 stable 이 잡는다. ⇒ +237s/회차에 실익 0.
판정: 넓히지 않는다. 부분 확장(fmt@beta 만 · +3s)도 기각 — 이력 0건 · beta rustfmt 미설치가
기본이라 DoD 가 즉시 rc=1 · 부분 교차곱은 검사기 모델 변경을 요구한다(이 회차 금지).
재개 조건 + 세는 명령 + 오늘의 값 0 을 approach.md §4 에 박았다: 「cargo clippy --all 이외의
step 이 beta 셀에서만 실패한 run 이 1건이라도 생기면 다시 연다」. 「비용이 싸졌다」는 재개
사유가 아니다.
검사기는 docstring 1블록만 바꿨다(그 파일이 「Widening … is a decision」이라 적고 결정 결과를
몰라 읽는 사람을 오도한다). AST 대조로 실행 경로 불변 확인. .rs 0줄 · rust.yml 무접촉 ·
CLAUDE.md DoD 블록 무접촉(넓힌다가 아니므로 줄을 더하지 않았다 — 더했으면 dod_parity 즉시 red).
…oss-product-decision]
STATE.md 진행중 → 완료(게이트③ PR #27 · --merge · ★이번엔 두 겹으로 강제 — 등재 repo +
자식 PR #28 이 이 브랜치 위에 얹혀 있다 · 단 #28 의 base 는 main 이라 브랜치 소멸로
닫히지는 않는다 · 착지 후 반사실 behind 0 유지) + worklog .json 게이트③ 집행 1줄
(동봉 전 head 가 핀과 일치했음 · fetch 를 먼저 쳐 거짓 일치를 막았음). 코드 변경 0.
@Jun025
Jun025 merged commit ba4bb41 into mainSep 4, 2026
10 checks passed
@Jun025
Jun025 deleted the feat/rustjava-parity-cross-product-decision branch September 4, 2026 13:56
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…bling-repo-survey]
게이트² request-changes(F1·F1-⒝·F2·F3·F4) 승계. 문서만 — 코드 0줄.
판정(⒞ 조건부 필요 · 축 B beta · 대칭차 값)은 무접촉이다(검수자가 재현했다).
F1 — §0 신설. 이 PR 은 스택이다: 204f98b(#27 의 구현 커밋)이 이 브랜치의 조상이고
(--is-ancestor rc=0), #28#27 의 옛 상태를 업고 있다(e9e2a8eed04620 rc=1 ·
merge-tree rc=1 CONFLICT STATE.md). 착지 순서 #27#28. 단 base 가 main 이라 #27 의
브랜치가 지워져도 이 PR 이 닫히지는 않는다(ripple 사고와 다른 형상). 초판이 MERGEABLE
로 보였던 이유(GitHub 이 #27 이전 main 과 대조)도 적었고, 그 예정이 실현됐음을 갱신했다
— #27ba4bb41 로 착지했고 워밍 후 재조회는 CONFLICTING/DIRTY · 충돌 STATE.md 1건.
그 1건은 게이트③ 2-c⒜ 승인 범위 안이고 코드 충돌 0 이다. 해소는 하지 않았다.
F1-⒝ — 「검사기 무접촉」을 이 회차 커밋으로 한정. PR 파일 목록의
scripts/check-dod-ci-parity.py 5+ 는 #27 의 것이고, 이 회차 커밋은 결백하다
(git diff 204f98b..ed04620 -- '*.rs' scripts/ .github/ CLAUDE.md → 0).
F2 — §1⒜ 의 「«그대로» 적용」이 부정확했다(손으로 주석을 벗기고 잰 값이다 · 분석값 1 은
옳다). 상수 1줄만 바꿔 wie 에 돌리면 rc=1 · 축 A 대칭차 7(CI 3 / DoD 4)이 나오고,
원인은 four gates 4줄의 후행 주석을 norm() 이 안 벗기는 것이다. RustJava 자신의 DoD
에는 주석이 없어 그 파서가 이 축을 만난 적이 없다. ⇒ T3 의 wie 전용 축을 3 → 4 로.
F3 — 「포팅 불가」를 qts 로 한정(qts 는 sys.exit · wie 는 돈다). 표제·PR 제목 정정.
F4 — T3 합격선에 「세는 명령 + 오늘의 값」 한 줄(wie 9 · qts 38). T1·T2 가 오늘의
어긋남을 닫아 버리므로 그것이 없으면 ⒞ 를 기계로 다시 물을 수 없다.
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…dod-ci-parity-sibling-repo-survey]
#27(ba4bb41)이 착지하며 예고된 STATE.md 충돌을 해소한다. 검수자가 두 회차 전에
실측으로 세운 그 충돌이다(merge-tree e9e2a8eed04620 rc=1 · CONFLICT STATE.md).
hunk 분류: 충돌 hunk 1건 · 전부 기계적 · ★판단 필요 0.
근거 — HEAD 쪽은 「진행중」에 새 항목(조사 회차 14줄)을 «추가»했고 main 쪽은 교차곱
항목을 「진행중」→「완료」로 «이동»시켰다(같은 앵커라 충돌). 같은 줄·같은 값을 다르게
고친 자리는 없다: 두 판본의 교차곱 블록은 16줄 중 15줄이 «바이트 동일»이고, 유일한
차이는 마지막 줄(브랜치 「PR 대기 — 게이트③ 미착지」 ↔ main 의 게이트③ 완료 5줄)로
그것은 값 불일치가 아니라 «착지 상태»이며 main 이 권위다(그 회차가 실제로 착지했다).
해소 = 합집합 · 시간순: 「진행중」에는 이 회차 항목만 남기고, 교차곱 항목은 main 이
옮겨 둔 「완료」판(게이트③ 줄을 포함한 상위집합)을 채택한다. 항목 유실 0 —
교차곱 항목은 파일에 정확히 1회 존재하고 그 자리가 「완료」다.
승인 내용 무접촉: 승인 형상(5c2ed7b) 대비 변경은 worklog
2026-09-04-dod-ci-parity-cross-product-decision.json 1파일뿐이고 그것은 origin/main
과 바이트 동일하다(= main 기여). 조사 회차 산출물 2파일과 「진행중」 항목 14줄은
바이트 동일. 코드 0줄 · 형제 repo 무접촉.
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…bling-repo-survey]
STATE.md 진행중 → 완료(게이트③ PR #28 · --merge · 등재 repo · 부모 #27 착지로 생긴
CONFLICTING 을 별 해소 회차가 풀었고 판단 필요 hunk 0 · 검사 1건 → 10건 전건 성공 ·
재검은 총괄이 「건너뛴다」로 판정) + worklog .json 게이트③ 집행 1줄(핀 불일치를 안고
집행한 사실과 그 근거를 명시). 코드 변경 0.
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…nce-decision]
게이트² request-changes 승계 + 부모 #28(18fbb6e) 착지로 생긴 REPORT.md 충돌 해소를
한 커밋에 접었다(검수자 권고 — 추가 비용 0). 코드 기여 0줄.
F4 잔존 — worklog .json summary 에 정정 표지 «밖»으로 살아 있던 「33 은 실제로 아팠던
값이다」를 지우고 표지를 달았다. 그 필드는 다음 회차가 통째로 인용하는 표면이고,
approach.md ⒟ 와 STATE.md 에서는 지워 놓고 여기에만 남아 저장소가 자기와 어긋났다.
상시 규칙 전파(approach.md §5 「병기 없는 충돌 수는 어디에도 쓰지 않는다」·「델타인가
누적인가도 밝혀라」) — summary·워크로그 .md 산문·STATE.md·json issues 의 「S3 충돌
9건」·「S8 8건」을 델타/누적 + base·merge-base 병기로 고치고, 「중앙 44일」에 창 정의
주의(41일·±3일)를 전파했다. ★표를 고쳤다고 문서가 고쳐진 것이 아니다 — 같은 파일
안에서 표는 정확한데 산문은 맨 수였다.
★전수를 «명령 + 출력»으로 다시 돌렸고 그 결과 반려에 없던 두 자리를 더 찾았다:
STATE.md:16 과 json issues:27 도 같은 맨 수였다. 둘 다 고쳤다.
문면 좁힘 — approach.md 의 「착지 커밋 제목이 그 값의 1차 사료」를 «S1~S7» 로 한정하고
S8 은 예외임을 적었다(a76b305 제목·본문에 충돌 수 0건). 값 8 은 무접촉 — 그 출처는
git merge-tree --write-tree --name-only 3fb08a8bd42427 재측이다.
충돌 해소 — REPORT.md 1건을 합집합·시간순으로(미착지 최신인 이 회차 항목 → #28#27).
항목 중복 0 · 마커 0. ★auto-merge 된 STATE.md·approach.md 를 눈으로 확인했다:
양쪽 기여가 둘 다 살아 있고(진행중 1 + 완료 2 · §5-B 와 §4 두 절 공존) 구조 파손 0.
리베이스 0 · force-push 0.
코드 기여 0 증명: git diff --stat origin/main -- '*.rs' scripts/ .github/ CLAUDE.md
→ 0줄. 핀 대비 diff 에 잡히는 check-dod-ci-parity.py 5줄은 병합이 가져온 main 기여이고
git diff --quiet origin/main -- 그 파일 → rc=0(바이트 동일)로 확인했다.
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…dence-decision]
STATE.md 진행중 → 완료(게이트③ PR #29 · --merge · 등재 repo · 게이트② 3회차 만에
approve · 반려 둘이 모두 「수를 어떻게 적었는가」였고 그 규율은 「표를 고쳤다고 문서가
고쳐진 것이 아니다」 · 부모 #27·#28 착지로 두 번 CONFLICTING 이 됐고 그때마다 머지로
해소했으며 검사 1건 → 10건으로 그 기전을 확증했다) + worklog .json 게이트③ 집행 1줄
(동봉 전 head 가 핀과 일치했음 · fetch 를 먼저 쳐 거짓 일치를 막았음). 코드 변경 0.
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