[rustjava-loadable-set-from-loader-vs-rederive-decision] docs: 적재 가능 집합은 «재유도»를 유지한다 — 로더에서 읽지 않는다 - #77
Merged
Conversation
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).
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(검사기 바이트 동일).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
채택 제안
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."★순수 결정 회차 —
.rs0줄 ·scripts/0줄. 산출 =docs/loadable-set-source-of-truth.md(선례docs/test-data-target-policy.md).결정
재유도를 유지한다. 로더에서 읽지 않는다.
전제부터 확인했다 — 「4 중 3」은 참이다
산문이 아니라 고침 커밋
89c2e83c에서 갈랐다:as_proto전용 정규식 →list_proto3건이 «없음»으로impl의 첫name:만 집어 오귀속(생성자 둘일 때)★그 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.yml5잡 중 4잡이 그 형상(툴체인 필요한 것은rust_ci하나).※제안이 스스로 댄 드리프트 위험도 이 repo 에 선례가 있다 —
test-data/class-file-versions.txt+record-class-file-versions.py(그래서AGENTS.md가 「같은 커밋에 고쳐라」를 못박는다).★결정적 실측 — 그 실패는 «공짜로» 잡힌다
재유도 버그는 **「파스가 짧게 나온다」**는 지문을 갖고, 불변식 하나가 그것을 본다:
등재 줄 수 == 파싱된 등재 == 해석된 이름 수loader.rs등재 줄 26838cbab7e⇒ 결함 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)
fmt0 ·clippy stable0 ·clippy +beta0 ·clippy wasm320 ·cargo test --all584 passed / 0 failed / 1 ignored ·check-worklog-json0(65파일) ·check-dod-ci-parity0 ·check-named-exception-classes-are-loadable0(846/43/268) ·check-merge-dropped-symbols0