Skip to content

[rustjava-assert-loadable-rederivation-did-not-come-up-short] feat(scripts): 되유도를 믿지 않고 «단언»한다 - #82

Merged
Jun025 merged 2 commits into
mainfrom
feat/rustjava-assert-rederivation-complete
Sep 21, 2026
Merged

Jun025 merged 2 commits into
mainfrom
feat/rustjava-assert-rederivation-complete

Conversation

@Jun025

@Jun025 Jun025 commented Sep 19, 2026

Copy link
Copy Markdown
Owner

채택 제안 2026-09-19-loadable-set-source-of-truth#p0.
제안에 how 필드가 없다(title·plainSummary·userBenefit·why·tradeoff·effort·target 뿐) — why 를 따르고 tradeoff 에서는 의도적으로 갈렸다(맨 아래).

★먼저 쟀다 — 지금 «적게 잡히는» 것은 없다

같은 것을 네 가지로 센다(origin/main @ ad9eb1a6):

센 것
_proto() 출현 268
_proto(), 268
crate::classes:: 출현 268
REGISTERED 파싱 268
해석된 고유 이름 268

단언이 «틀리게» 울 조건도 함께 쟀다(이게 핵심이다): 한 줄에 등재 둘 0 · 쉼표 없는 _proto() 0 · 주석 속 _proto() 0 · 중복 이름 0.
⇒ ★green 에서 시작하는 회귀 방어이지 «현존 결함 수리»가 아니다. 지어내지 않았다.

지은 것 — 두 축, 둘 다 fail-closed(exit 2)

⑴★파싱 ↔ 독립 증인: REGISTERED의심 대상이라 자기 매치를 세는 것은 증명이 아니다 ⇒ 등재가 없이는 쓰일 수 없는 토큰으로 두 번째로 센다.
⑵★등재 수 ↔ 고유 이름 수: 둘이 한 이름으로 접히면 해석이 틀린 것 ⇒ ★접힌 쌍을 «이름으로» 찍는다(진짜 중복 등재와 오귀속을 한눈에 가르라고).
1파일 · +38/−2.

★양방향 축 — 제품 스크립트를 «실제로 있었던 결함»으로 되돌려 쟀다

되돌린 결함 결과
초판의 as_proto 전용 정규식 rc=2265 registrations parsed but 268 proto calls are in rustjava-runtime/src/loader.rs
초판의 «짧은 이름 키» rc=2268 registrations resolved to only 263 names + ★java/util/Formatter <- java::util::Formatter::as_proto(), java::util::logging::Formatter::as_proto()다섯 쌍 지목
원형상 rc=0✓ 43 named exception class(es) across 846 call site(s); all 268 loadable

둘째 메시지가 이 회차의 요지다 — 게이트②가 «소스를 나란히 읽어» 찾아낸 그 충돌쌍을 ★이제 스크립트가 스스로 말한다.

브리프의 세 질문

무엇과 비교하나 = ★소스 자신(같은 파일을 두 번째로 센다) — 저장된 기준선도, 직전 실행값도 아니다.
첫 실행 · 정당한 감소 = ★애초에 생기지 않는다. 기억하는 수가 없으니 「첫 실행」이 없고, 클래스를 지우면 네 수가 함께 내려가 green 이다. ★이 형상을 고른 이유가 그것이다.
죽는가 말하는가 = ★죽는다(exit 2 «cannot measure»). 형제 회차(2026-09-18-nonliteral-exception-call-sites#p0)는 「세어 찍고 절대 실패시키지 않는다」를 골랐고 ★여기서는 갈렸다:
그쪽은 «알려진 사각을 재는» 것이고, 이쪽은 ★«검사기가 자기 입력을 잘못 읽는» 것이다. ★이 파일은 이미 그 계급을 exit 2 로 다룬다(해석 불가 등재 → die). 짧은 loadable 집합은 있는 클래스를 «못 싣는다»로, 없는 것을 «있다»로 만든다.

★대가(숨기지 않는다)

숫자 둘이 «참이어야» 한다loader.rs 가 등재 배열 에서 as_proto() 를 부르면 ★정상 트리에서 red(오늘 실측: 268 전건이 등재다).
⒝★**«진짜» 중복 등재는 false red** — 두 등재가 의도적으로 한 클래스를 가리키는 경우. 오늘 0이고 메시지가 이름을 대지만 위험은 실재한다.
⒞★바닥이지 증명이 아니다(제안 자신의 말) — 틀리되 서로 다른 이름으로 매핑되면 268 을 유지하고 통과한다. 잡는 것은 «과소계수» 계급이고, 실측된 거짓 초록 둘이 그 계급이었다.
⒟비용 유의차 없음: 전 6.47/8.01/4.57s ↔ 후 6.35/5.68/7.53s(구간 겹침 · 부하가 커 편차가 효과보다 크다).

★제안의 tradeoff 에서 갈렸다(의도)

제안 예고: "it couples the check to the textual shape of loader.rs (one registration per line), which is true today and is not guaranteed."
⇒ ★줄이 아니라 «출현»을 세어 그 묶임을 없앴다 — 줄 배치·쉼표 스타일과 무관하고, 오늘 줄 수와 동일(268 = 268) 이라 잃는 것도 없다.

DoD (9명령 전건 rc=0)

fmt 0 · clippy stable 0 · clippy +beta 0 · clippy wasm32 0 · cargo test --all 585 passed / 0 failed / 1 ignored ·
check-worklog-json 0(68파일) · check-dod-ci-parity 0 · check-named-exception-classes-are-loadable 0(★내가 고친 그 검사기 자신) · check-merge-dropped-symbols 0

jun0 and others added 2 commits September 19, 2026 10:01
…ripts): 되유도를 믿지 않고 «단언»한다

채택 제안 2026-09-19-loadable-set-source-of-truth#p0. ★제안에 how 필드가 없다 — why 를 따르고
tradeoff 에서는 의도적으로 갈렸다(아래).

★먼저 쟀다 — 지금 «적게 잡히는» 것은 없다: 같은 것을 네 가지로 세어 전부 268
(_proto() 출현 · _proto(), 줄 · crate::classes:: · REGISTERED 파싱) · 해석된 고유 이름도 268.
★단언이 «틀리게» 울 조건도 함께 쟀다: 한 줄에 등재 둘 0 · 쉼표 없는 _proto() 0 ·
주석 속 _proto() 0 · 중복 이름 0. ⇒ green 에서 시작하는 회귀 방어이지 현존 결함 수리가 아니다.

두 축(둘 다 fail-closed · exit 2):
 ⑴파싱 ↔ 독립 증인 — REGISTERED 는 «의심 대상»이라 자기 매치를 세는 것은 증명이 아니다.
   등재가 없이는 쓰일 수 없는 토큰으로 두 번째로 센다.
 ⑵등재 수 ↔ 고유 이름 수 — 둘이 한 이름으로 접히면 해석이 틀린 것이고, ★접힌 쌍을 이름으로 찍는다.

양방향 축(제품 스크립트를 «실제로 있었던 결함»으로 되돌려서):
 ⑴초판의 as_proto 전용 정규식 → rc=2 「265 registrations parsed but 268 proto calls」
 ⑵초판의 짧은 이름 키 → rc=2 「268 registrations resolved to only 263 names」 +
   java/util/Formatter <- java::util::Formatter::as_proto(), java::util::logging::Formatter::as_proto() 등 다섯 쌍 지목
 ⑶원형상 → rc=0. ★게이트②가 «소스를 나란히 읽어» 찾은 그 충돌쌍을 이제 스크립트가 말한다.

브리프 3문: 비교 대상 = 소스 자신(기준선·직전값 아님) · 첫 실행/정당한 감소는 «생기지 않는다»
(기억하는 수가 없다) · ★죽는다(exit 2) — 형제 회차의 「찍고 안 죽는다」와 갈렸다:
그쪽은 «알려진 사각을 재는» 것이고 이쪽은 «검사기가 자기 입력을 잘못 읽는» 것이며,
이 파일은 이미 그 계급을 exit 2 로 다룬다.

대가: 등재 배열 «밖» 호출이면 정상 트리에서 red · 진짜 중복 등재도 false red(오늘 0) ·
★바닥이지 증명이 아니다(틀리되 «다른» 이름이면 통과) · 비용 유의차 없음.

제안 tradeoff 와 갈렸다: 「loader.rs 의 텍스트 형태(한 줄 한 등재)에 묶인다」를
줄이 아니라 «출현»을 세어 없앴다(오늘 줄 수와 동일 268 이라 잃는 것도 없다).
…rigin/main — 원장 2파일 합집합

게이트③ 2-c⒜: REPORT.md·STATE.md 충돌을 전건 보존 합집합(시간순)으로 해소.
검사기 scripts/check-named-exception-classes-are-loadable.py 는 자동 병합(충돌 0·무접촉).
2-c⒟ 양방향 보존: ours 소실 0 · theirs 소실 0 · 신규 0.
계약 12 기여 불변: numstat base..ours ↔ origin/main..resolved 대칭차 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Jun025
Jun025 merged commit 2bc24f4 into main Sep 21, 2026
13 checks passed
@Jun025
Jun025 deleted the feat/rustjava-assert-rederivation-complete branch September 21, 2026 05:25
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