Skip to content

[rustjava-loadable-set-from-loader-vs-rederive-decision] docs: 적재 가능 집합은 «재유도»를 유지한다 — 로더에서 읽지 않는다 - #77

Merged
Jun025 merged 4 commits into
mainfrom
feat/rustjava-loadable-set-source-of-truth
Sep 18, 2026
Merged

Jun025 merged 4 commits into
mainfrom
feat/rustjava-loadable-set-source-of-truth

Conversation

@Jun025

@Jun025 Jun025 commented Sep 18, 2026

Copy link
Copy Markdown
Owner

채택 제안 2026-09-18-named-exception-classes-are-loadable#p2 — "The check works out which classes the runtime can load by re-reading the Rust source; three of this round's four defects came from that re-derivation being subtly wrong."

★순수 결정 회차 — .rs 0줄 · scripts/ 0줄. 산출 = docs/loadable-set-source-of-truth.md(선례 docs/test-data-target-policy.md).

결정

재유도를 유지한다. 로더에서 읽지 않는다.

전제부터 확인했다 — 「4 중 3」은 참이다

산문이 아니라 고침 커밋 89c2e83c 에서 갈랐다:

# 결함 반쪽
1 as_proto 전용 정규식 → list_proto 3건이 «없음»으로 loadable(재유도)
2 한 impl 의 첫 name: 만 집어 오귀속(생성자 둘일 때) loadable(재유도)
3 짧은 이름 키 → 충돌쌍의 한쪽이 다른 쪽을 대신 답함 loadable(재유도)
4 줄 단위 스캔이 rustfmt 가 쪼갠 34건 누락 ★named(호출부 스캔)

★그 4번째가 결정한다

검사기는 두 집합을 맞춘다. 로더 읽기는 그중 하나만 대체한다 — named(코드가 Jvm::exception 에 무엇을 넘기는가)는 ★로더가 원리적으로 답할 수 없다(846 호출부를 다 실행하지 않는 한 소스를 읽어야 한다).
⇒ ★파서 둘 중 하나를 없앨 뿐 «파싱»을 없애지 못한다. 실제로 그 남는 절반에서 하루 만에 다음 결함이 났다 — 형제 회차(2026-09-18-nonliteral-exception-call-sites)가 잡은 ★**「같은 앵커가 «주석 속 토큰»을 센다」**.

대가 실측 둘

⒜★검사기 전용 «생산 API» 가 필요하다 — get_runtime_class_proto 는 268 등재를 함수 «안» 지역 배열로 만들어 .find(|p| p.name == name) 로 쓴다. ★열거 API 0개(실측) ⇒ 런타임이 export 를 갖거나, 테스트가 목록을 다시 적어 진실원이 또 둘이 된다(제안이 없애려던 그것).
⒝★빌드 없는 검사에 빌드가 붙는다 — 현행 0.75 / 0.96 / 0.77초(소스 텍스트만) · CI 잡은 checkout + python3 두 줄이고 ★rust.yml 5잡 중 4잡이 그 형상(툴체인 필요한 것은 rust_ci 하나).
※제안이 스스로 댄 드리프트 위험도 이 repo 에 선례가 있다 — test-data/class-file-versions.txt + record-class-file-versions.py(그래서 AGENTS.md 가 「같은 커밋에 고쳐라」를 못박는다).

★결정적 실측 — 그 실패는 «공짜로» 잡힌다

재유도 버그는 **「파스가 짧게 나온다」**는 지문을 갖고, 불변식 하나가 그것을 본다:
등재 줄 수 == 파싱된 등재 == 해석된 이름 수

검사기 파싱된 등재 이름 ↔ loader.rs 등재 줄 268
초판 38cbab7e 265 263 ★깨진다 — 1회차에 그 자리에서 잡혔다
현행 268 268 통과

⇒ 결함 1·3 이 독립성·0.8초·무빌드를 하나도 내주지 않고 보였다. ★이 회차는 짓지 않고(제안이 요구한 것은 «결정») 후속 카드로 남겼다.
★과장하지 않는다: «모든 오귀속»을 잡지는 않는다 — 틀리되 서로 다른 이름으로 매핑되면 268 을 유지한다. 잡는 것은 과소계수 계급이고, 실측된 거짓 초록 둘이 그 계급이었다.

★브리프 전제 1건이 이 repo 에선 «거짓»이다

브리프는 「이 repo 의 machine-independence-guard 가 그 축이고 오늘 그 잡 하나로 전 PR 이 red 였다」고 적었다.
실측: ★RustJava 엔 그런 가드가 없다 — git ls-files | grep -i machine-independence 빈 출력 · rust.yml 잡은 5개(rust_ci·worklog_json·merge_drops·dod_parity·named_exception_classes).
⇒ 그것은 다른 repo 의 축이고, 여기서 잰 ⒜ 의 대가는 그 대신 툴체인·빌드 의존이다.

되돌릴 조건(사전 등록)

제안이 댄 계수 = 「재유도 결함이 몇 개 더 나오는가」. ★오늘 값은 «고침 이후 0»이고 «하루»짜리 증거라 논거로 쓰지 않았다.
⇒ ★loadable 재유도 경로(REGISTERED/PROTO_FN/키잉)에서 «세 번째» 결함이 나오면 이 결정을 다시 연다 — named 스캔 결함은 세지 마라(로더 읽기가 고치는 자리가 아니다).

DoD (9명령 전건 rc=0)

fmt 0 · clippy stable 0 · clippy +beta 0 · clippy wasm32 0 · cargo test --all 584 passed / 0 failed / 1 ignored · check-worklog-json 0(65파일) · check-dod-ci-parity 0 · check-named-exception-classes-are-loadable 0(846/43/268) · check-merge-dropped-symbols 0

jun0 added 4 commits September 19, 2026 02:45
…집합은 «재유도»를 유지한다 — 로더에서 읽지 않는다

채택 제안 2026-09-18-named-exception-classes-are-loadable#p2. 순수 결정 회차 — .rs 0줄 · scripts/ 0줄.

전제부터 확인했다: 「4결함 중 3이 재유도」는 참이다(고침 커밋 89c2e83 에서 갈랐다 —
loadable 3 · named 1). ★그런데 그 4번째가 결정한다: named(코드가 무엇을 넘기는가)는
로더가 답할 수 없어, 로더 읽기는 «파서 둘 중 하나»를 없앨 뿐 파싱을 못 없앤다.
실제로 그 절반에서 하루 만에 다음 결함이 났다(형제 회차의 「주석 속 토큰」).

대가 실측: 열거 API 0개(268 등재가 함수 안 지역 배열) ⇒ 검사기 전용 «생산 API» 가 필요하고,
현행 0.8초·무빌드인데 rust.yml 5잡 중 4잡이 그 형상이다(툴체인은 rust_ci 뿐).

결정적 실측: 초판 검사기를 지금 트리에서 돌리면 265 파싱 / 263 이름 ↔ 등재 줄 268
⇒ 불변식 하나로 결함 2건이 1회차에 잡혔을 값이다(현행 268/268/268). 독립성·0.8초·무빌드를
내주지 않고 얻으므로 후속 카드로 남겼다. ★단 모든 오귀속을 잡지는 않는다(과소계수 계급만).

브리프 전제 1건이 이 repo 에선 거짓이다: machine-independence-guard 는 없다(다른 repo 축).

재개 조건 사전 등록: loadable 재유도 경로에서 «세 번째» 결함이 나오면 다시 연다.
「고침 이후 0건」은 하루짜리 증거라 논거로 쓰지 않았다.
…트② 반려 승계 — 형제 인용 정정과 불변식 범위 정정

F1 — 형제 회차 인용이 인용원과 반대였다. 그 회차 worklog 는 주석을 「0 on a commented-out line」,
즉 «측정된 0» 으로 적는다. 실제 앵커 함정은 주석이 아니라 «다른 함수 8종 41자리»
(`assert_exception(`·`suppress_io_exception(` 등 · 첫 인자가 jvm)이고, 세면 33 · 맞는 답은 0 이다.
간격도 「하루 만에」가 아니라 실측 4시간 31분(89c2e83 19:49 → 128e0fe 00:21 · 캘린더로만 «다음 날»).
네 자리 전부 고쳤다: 결정 문서 · worklog md · REPORT.md · STATE.md.
★이 회차의 자기 규율(「산문이 아니라 커밋에서 갈랐다」)이 바로 그 자리에서 안 지켜졌고,
같은 커밋의 STATE.md 가 6줄 아래에서 같은 사실을 옳게 적고 있었다 — 그 사실을 worklog 에 한 절로 남겼다.

F2 — 「both measured false greens」는 과대주장이었다. 불변식의 세 항이 전부 loader.rs + classes/ 에서
나오므로 named 수를 아예 보지 않는다 ⇒ 거짓 초록 둘 중 하나(결함 3 = 짧은 이름 키 충돌)만 잡고
결함 4(다중 줄 · named 쪽 812↔846)는 못 잡는다. 잡는 것은 «거짓 초록 1 + 거짓 빨강 1» 이다.
세 자리를 고쳤다(브리프는 두 자리라 했으나 worklog md 에 같은 문장 사본이 있었다).
★본문 표(defects 1 and 3)와 worklog json 은 정확하므로 무접촉이다(numstat 0).

§12-5 — 「Its CI job is five lines」는 named_exception_classes 잡(이 문서의 주어)이고 실측 5줄로 참이다.
merge_drops 가 7줄인 것은 다른 잡이다. 그러나 검수자가 실제로 오독했으므로 주어를 명시하고
「그 넷의 공통점은 길이가 아니라 툴체인 불요」임을 한 괄호로 못박았다.

측정·논증·결정 무접촉 · 코드 0행(.rs 0 · scripts/ 0).
…/main — 승인된 원장 2파일 합집합

#78 착지(97d2258)로 생긴 원장 재충돌. 양쪽 항목 전건 보존·시간순(최신 상단).
보존 증명: 소실 ours=0 theirs=0 · 충돌 마커 0 · 두 회차 엔트리 각각 1개씩 온전.
※다중집합 «외래줄 1」은 «- 검증: DoD 9명령 · 아래 절.» 이 두 엔트리에 각각 있어서 생긴
  술어 한계이지 오염이 아니다(엔트리 단위로 각 1개 확인).
해소면 밖 변경 0.
…/main — 승인된 원장 2파일 합집합

형제 착지(#76 e9910a7)로 생긴 원장 재충돌. 게이트③ 2-c⒜ 승인 범위(원장 파일 한정 · 코드 충돌 0).
양쪽 항목 전건 보존·시간순 · 한쪽 통째 채택(--ours/--theirs) 0.
보존 증명: ours추가 REPORT 11 / STATE 7 · theirs추가 17 / 9 — 소실 0/0 · 마커 0 · 엔트리 단위 온전(82엔트리).
계약 12: 해소면 밖 변경 0 — 결정 문서·worklog 쌍이 핀(e175bac) 대비 바이트 동일.
@Jun025
Jun025 merged commit ad9eb1a into main Sep 18, 2026
12 checks passed
@Jun025
Jun025 deleted the feat/rustjava-loadable-set-source-of-truth branch September 18, 2026 23:19
Jun025 pushed a commit that referenced this pull request Sep 19, 2026
… — 원장 2파일 합집합(충돌 PR 은 pull_request CI 가 돌지 않는다)

형제 착지(#76 e9910a7 · #77 ad9eb1a)로 생긴 원장 재충돌. 코드 충돌 0.
★당긴 이유: 충돌 상태에서는 pull_request 워크플로가 «돌지 못해» 이 head 의 검사가 12건 → 1건으로
줄었다(coverage 만). ★그중 named_exception_classes 는 «내가 고친 바로 그 스크립트»를 돌리는 잡이라,
그대로 두면 CI 가 이 회차의 변경을 한 번도 검증하지 못한 채 검수로 간다.
보존: 소실 0/0 · 마커 0 · 해소면 밖 변경 0(검사기 바이트 동일).
Sign up for free to 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