Skip to content

docs: 형제 repo(wie·qts) 파리티 락 필요성 조사 — 둘 다 조건부 필요 · 포팅은 qts 불가 / wie 는 파서 4축 수정 후 가능 [rustjava-dod-ci-parity-sibling-repo-survey] - #28

Merged
Jun025 merged 4 commits into
mainfrom
feat/rustjava-parity-sibling-survey
Sep 4, 2026

Conversation

@Jun025

Copy link
Copy Markdown
Owner

판정

채택 제안 2026-09-04-dod-ci-parity-lock#p1 에 대한 ★읽기 전용 조사 + 판정이다.
형제 repo 변경 0gh api repos/<slug>/contents/… 로만 읽었다(git 쓰기 0 · PR 0 · 파일 수정 0).

결론: wie·qts 둘 다 ⒞ «조건부 필요». 단 RustJava 검사기는 «포팅 불가»다.

구조 — ★같지 않다

RustJavawieqts
DoD 정본CLAUDE.md 코드블록★**AGENTS.md** 코드블록★**make 타깃 이름**(산문)
간접층없음없음Makefile
CI 파일rust.yml 1rust.yml + 7ci.yml + 11
toolchain 매트릭스[stable, beta][stable, beta]없음 ⇒ 축 B 부재
조건부 step설정뿐★★**«진짜 게이트»**(cargo test 2갈래)설정 + 배포

wie 에 우리 파서를 그대로 쓰면 cargo test 가 「DoD 에만 있다」로 잡혀 ★거짓 red.
qts 는 Makefile 간접층 때문에 「DoD 줄 ↔ CI run: 줄」 문자열 대조가 ★원리적으로 성립하지 않는다.

그런데 어긋남은 «둘 다 실재»한다 — 이력 전수 분해

wie · rust.yml 최근 200 run(성공 166 · 실패 34):

형태건수로컬 DoD 가 잡나
clippy @ stable24
clippy @ beta «만»9 (26%)✘ — four gates 에 cargo +beta없다
windows test1✘(OS 축)

qts · ci.yml 최근 실패 60건(2026-07-18~09-03):

형태건수로컬 DoD 가 잡나
ruff format --check포함38 (63%)
그것이 «유일한» 실패10 (17%)✘ — make lint 는 그것을 안 친다
ruff check7

문서 실측: 문자열 betawie 규범 문서에 0건 · 문자열 formatqts 규범 문서에 0건.

⇒ 먼저 할 일은 «락»이 아니라 «각 한 줄»

  • wie: four gates 에 cargo +beta clippy --all -- -D warnings → 이력 9/34 를 로컬로
  • qts: make lintuv run ruff format --check . → 이력 10/60 을 로컬로
  • 락 포팅은 그 «뒤» — 락은 어긋남을 «막는» 것이지 «고치는» 것이 아니다.

구현 0 — 형제 repo 는 다른 레인 소관이라 T1·T2·T3 의 축과 합격선만 워크로그에 적었다.

일반 사실 하나

★★세 repo 가 전부 이 어긋남을 갖고 있었고, 어긋난 자리가 전부 규범 문서에 «적혀 있지 않았다»
(우리 = wasm32 줄 + beta 축 · wie = beta 축 · qts = ruff format --check)
⇒ ★**「사람이 문서를 최신으로 유지한다」가 세 repo에서 «각각» 실패했다.**

경계

이 repo 검사기·rust.yml·CLAUDE.md DoD 블록 무접촉 · .rs0줄 · 파리티 rc=0 유지.
★등재 repo ⇒ 게이트③은 --merge.

…va-dod-ci-parity-sibling-repo-survey]
채택 제안 2026-09-04-dod-ci-parity-lock#p1 에 대한 읽기 전용 조사 + 판정.
형제 repo 는 gh api /contents 로만 읽었다 — git 쓰기 0 · PR 0 · 파일 수정 0.
구조 판정: 같지 않다. wie 의 DoD 정본은 AGENTS.md(우리는 CLAUDE.md)이고 CI 의 4번째
게이트(cargo test)가 if: 로 갈린 2 step + 블록 스칼라라 우리 파서의 「조건부 = OS 축 =
제외」 규칙이 거짓 red 를 만든다. qts 는 DoD 가 make 타깃 이름(Makefile 간접층)이고
toolchain 매트릭스가 없어 축 B 가 성립하지 않으며 gitleaks 는 action 이라 어떤 run:
파서도 못 본다. ⇒ 제안 문면의 「복사하지 마라」가 실측으로 확인됐다.
그런데 어긋남은 둘 다 실재한다(이력 전수 분해). wie rust.yml 최근 200 run(성공 166 ·
실패 34) 중 beta 셀에서만 실패한 clippy 가 9건(26%)인데 four gates 에 cargo +beta 가
없다(문자열 beta 가 규범 문서에 0건). qts ci.yml 최근 실패 60건 중 uv run ruff format
--check . 가 유일한 실패인 것이 10건(17%)인데 make lint 는 그것을 안 친다(문자열
format 이 규범 문서에 0건).
판정: 둘 다 ⒞ 조건부 필요. 단 먼저 할 일은 락이 아니라 각 한 줄이다 — wie 는 four
gates 에 cargo +beta clippy --all -- -D warnings, qts 는 make lint 에 ruff format
--check. 락은 그 다음이다(락은 어긋남을 막는 것이지 고치는 것이 아니다). 구현 0 —
형제 repo 는 다른 레인 소관이라 T1·T2·T3 의 축과 합격선만 적었다.
일반 사실: 세 repo 가 전부 이 어긋남을 갖고 있었고 어긋난 자리가 전부 규범 문서에
적혀 있지 않았다 ⇒ 「사람이 문서를 최신으로 유지한다」가 세 repo에서 각각 실패했다.
이 repo 검사기·rust.yml·CLAUDE.md DoD 블록 무접촉 · .rs 0줄 · 파리티 rc=0 유지.
Jun025 pushed a commit that referenced this pull request Sep 4, 2026
…oss-product-decision]
STATE.md 진행중 → 완료(게이트③ PR #27 · --merge · ★이번엔 두 겹으로 강제 — 등재 repo +
자식 PR #28 이 이 브랜치 위에 얹혀 있다 · 단 #28 의 base 는 main 이라 브랜치 소멸로
닫히지는 않는다 · 착지 후 반사실 behind 0 유지) + worklog .json 게이트③ 집행 1줄
(동봉 전 head 가 핀과 일치했음 · fetch 를 먼저 쳐 거짓 일치를 막았음). 코드 변경 0.
@Jun025Jun025 changed the title docs: 형제 repo(wie·qts) 파리티 락 필요성 조사 — 둘 다 조건부 필요 · 검사기는 포팅 불가 [rustjava-dod-ci-parity-sibling-repo-survey]docs: 형제 repo(wie·qts) 파리티 락 필요성 조사 — 둘 다 조건부 필요 · 포팅은 qts 불가 / wie 는 파서 4축 수정 후 가능 [rustjava-dod-ci-parity-sibling-repo-survey]Sep 4, 2026
jun0 added 3 commits September 4, 2026 23:18
…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 가 오늘의
어긋남을 닫아 버리므로 그것이 없으면 ⒞ 를 기계로 다시 물을 수 없다.
…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 무접촉.
…bling-repo-survey]
STATE.md 진행중 → 완료(게이트③ PR #28 · --merge · 등재 repo · 부모 #27 착지로 생긴
CONFLICTING 을 별 해소 회차가 풀었고 판단 필요 hunk 0 · 검사 1건 → 10건 전건 성공 ·
재검은 총괄이 「건너뛴다」로 판정) + worklog .json 게이트③ 집행 1줄(핀 불일치를 안고
집행한 사실과 그 근거를 명시). 코드 변경 0.
@Jun025
Jun025 merged commit 18fbb6e into mainSep 4, 2026
10 checks passed
@Jun025
Jun025 deleted the feat/rustjava-parity-sibling-survey branch September 4, 2026 15:37
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