Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions REPORT.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
# REPORT
## [2026-09-23] `## 다음` 은 «ref 목록»으로 남긴다 — 카드로 옮기면 할 일이 0으로 보인다 (rustjava-2026-09-23-stale-next-pointer-and-euc-kr-boundary-adopt-p1)
- 무엇을: `STATE.md` `## 다음` 머리에 규칙 3줄을 박고 절을 한 번 재작성했다 — 항목은 카드 ref·PR 번호만, 선행 사슬 1개, 카드 밖 항목(PR #81) 1개. 종전 ⓪ 블록은 사료로 내렸다.
- 왜: 세 번 낡았고 세 번 다 «지목을 쓴 회차 ≠ 닫은 회차»였다(규칙 「닫히는 즉시」는 08-27 부터 있었다). 카드 전면 이전(⒞)은 tower 술어로 이 레인 열린 카드가 **0**(32건 전건 injected)이라 정본이 「할 일 없음」을 말하게 돼 기각.
- 사용자 영향: 없음(문서). 낡은 줄이 생겨도 줄당 조회 1회(`adoptedProposals` 에 있나)로 보인다.
- 후속 추천: 총괄 몫 1건 — 주입됐으나 이름 일치 티켓이 없는 RustJava 카드 11건 처분 확인(상세 = `docs/worklog/2026-09-23-next-section-canon-decision.md`).

## [2026-09-23] `## 다음` 이 세 번째로 낡았고, 그 밑에서 EUC-KR 한 글자가 조용히 사라지고 있었다 (rustjava-next-slice-and-stale-next-pointer)
- 무엇을: `STATE.md` `## 다음` 의 모든 「다음 후보」를 `git merge-base --is-ancestor` 로 **전수 재측**해 **8건 중 7건이 이미 닫혀 있음**을 확인하고 사료로 접었으며, 살아 있는 후보만 새 `⓪` 블록에 올렸다. 재측 과정에서 유일하게 «열려 있던» 항목(④-3 `InputStreamReader` 디코더)이 실제 결함임이 드러나 **그 자리에서 고쳤다**.
- 왜: `LANE_IDLE rustjava`(2026-09-23 · ★**1088분** 조용 · 큐 0 · running 0). 근인은 워커가 아니라 **발권**이었고, 발권이 멈춘 이유는 `## 다음` 의 최우선 항목이 **이미 끝난 일**을 가리켰기 때문이다. ★**이 절이 그 병을 스스로 두 번 기록해 놓고 세 번째를 냈다** — 2026-09-11 에 「다음 실작업 = ③의 null-guard」로 고쳐 쓴 그 null-guard 가 **같은 날 이미 닫혀 있었다**(`6da7d66f`).
Expand Down
17 changes: 15 additions & 2 deletions STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
(둘 다 이것보다 오래됐고 MERGEABLE/CONFLICTING 처분이 이미 걸려 있다). 겹침은 전부 **append 형 합집합**이라 해소는 기계적이다)

## 완료
- [rustjava-2026-09-23-stale-next-pointer-and-euc-kr-boundary-adopt-p1] `## 다음` 정본 결정 = ⒝ 얇은 층(ref + 선행 사슬 + 카드 밖 항목만 · 산문 지목 금지). ⒞ 기각 근거 = tower 술어로 열린 카드 0(32건 전건 injected). 채택 `2026-09-23-stale-next-pointer-and-euc-kr-boundary#p1`. 상세 `docs/worklog/2026-09-23-next-section-canon-decision.md`.
- [rustjava-prune-declined-followup-proposals-2026-09-21] ★**추천 후속작업 2건 기각** — 운영자 지시(2026-09-21 우선순위 정리). ★제품 코드 **0줄** · 새 제안 **0** · 검사기/CI 신설 **0**.
★**닫은 둘**(검사기 다듬기 축): `2026-09-19-nonliteral-blind-spot-is-reported-not-gated#p0` · `2026-09-20-lock-script-output-order#p0`.
★**남긴 둘**(런타임 축): `2026-09-20-string-array-hiding-overflows-stack#p0` · `2026-09-20-name-the-missing-bootstrap-class#p0`.
Expand Down Expand Up @@ -1510,7 +1511,20 @@

## 다음

### ⓪살아 있는 후보 — ★★**[2026-09-23 전수 재측] 이 블록«만» 읽어라. ①~⑤ 는 사료다.**
### ⓪규칙 — ★**이 절은 «카드 ref + 선행관계 + 카드 밖 항목»만 적는다**(2026-09-23 결정 · `…-adopt-p1`)

★**항목은 전부 ref(`<worklog>#pN`) 또는 PR 번호로 적는다 — 「다음 실작업 = X」 같은 산문 지목 금지.** 할 일의 본문은 카드(`docs/worklog/*.json`)가 갖는다.
★**닫힘 판정 = 그 ref 가 어느 worklog 의 `adoptedProposals`/`declinedProposals` 에 있다**(PR 은 `state`) — 한 줄당 조회 1회로 끝난다. 닫힌 줄은 **닫는 회차가** 지운다.
★**카드 «열림»은 tower 술어(`… − injected`)로 세지 마라** — 이 레인은 그 술어로 **0**이다(주입 = 발권 요청일 뿐 착지가 아니다). 여기 술어는 `전체 − adopted − declined` 다.

1. **선행 사슬**(카드가 표현 못 하는 유일한 것): `2026-09-17-link-lambdametafactory#p1`(결정) → `#p0`(어댑터) → `java.lang.invoke` 패키지(카드 없음 · 근거 = `rustjava-runtime/src/classes/java/lang/invoke` **부재**) → `2026-09-17-string-concat-recipe-arity#p1`.
2. **순서 없음**: `2026-09-18-bootstrap-argument-index-and-tag#p0` · `2026-09-20-name-the-missing-bootstrap-class#p0`(둘 다 `queue/rustjava` 발권됨) · `2026-09-20-string-array-hiding-overflows-stack#p0` · `2026-09-12-zip-getinputstream-guard-lock#p0` · `2026-09-12-test-class-scratch-premise#p0`.
3. **카드 밖**: PR **#81** — `CONFLICTING`(2026-09-23 워밍 후 재조회) · 충돌 해소 선행.

---- 이하 ⓪(2026-09-23 전수 재측 판)·①~⑤ 는 사료다. ★**「다음」으로 읽지 마라** ----


### ⓪-사료 — 2026-09-23 전수 재측 판(위 ⓪규칙으로 대체됨)

★★★**이 절이 자기 규율(「닫히는 즉시 닫아라」)을 «세 번» 어겼다** — ⑴③-0 `…claude-md-prune-disposition`(2026-08-27 해소)이
최우선에 남아 레인이 조용해졌고 ⑵①의 「다음은 S5」가 8일 낡은 채 남아 2026-09-11 **중복 발권**을 만들었고
Expand Down Expand Up @@ -1554,7 +1568,6 @@ EUC-KR 은 「마지막 바이트 >= 0x81 이면 한 바이트 보류」였다
⇒ **완성된 쌍**의 후행 바이트도 보류돼 그 쌍의 선두 바이트가 홀로 남고, 매 read 마다 새로 만드는 디코더가 그것을 **자기 상태로 삼켜** 버렸다.
실측 = `"12345678한"`(EUC-KR 10바이트) → ★**`"12345678\u{FFFD}"`**. 처방은 전방 주사(선두면 2, 아니면 1)이고 테스트 3형상으로 잠갔다.

---- 이하 ①~⑤ 는 사료다. ★**「다음」으로 읽지 마라** ----

### ①(최우선이 «아니게 됐다») upstream 동기화 — ★★**[2026-09-11 갱신] 캠페인 «종료». 동기 회차를 열지 마라.**

Expand Down
13 changes: 13 additions & 0 deletions docs/worklog/2026-09-23-next-section-canon-decision.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"date": "2026-09-23",
"taskId": "rustjava-2026-09-23-stale-next-pointer-and-euc-kr-boundary-adopt-p1",
"summary": "STATE.md「## 다음」의 정본 결정 — ⒝ 얇은 층(카드 ref + 선행관계 + 카드 밖 항목만). 산문 지목 금지 · 닫힘 = adopted/declined 조회 1회.",
"decision": "b-thin-layer",
"options": {
"a-keep-hand-maintained": "재발 3회/27일 · 규칙「닫히는 즉시」가 08-27 부터 있었는데 2회 더 깨짐 · LANE_IDLE 1088분 · 중복 발권 1. 잃는 것 0.",
"b-thin-layer": "절이 44줄 → 본문 3항목(ref 9 · 사슬 1 · PR 1). 닫힘 판정이 줄당 조회 1회. 잃는 것: 산문 근거(카드·사료로 이동). 낡을 수는 여전히 있다 — 다만 낡음이 '조회 1회로 보인다'.",
"c-cards-only": "tower 술어로 열린 카드 0(32건 전건 injected) ⇒ 정본이 '할 일 없음'을 말한다. 잃는 것: 선행 사슬 1(노드 4), 카드 밖 항목 1(PR #81), 주입됐으나 이름 일치 티켓이 없는 카드 가시성."
},
"adoptedProposals": ["2026-09-23-stale-next-pointer-and-euc-kr-boundary#p1"],
"proposals": []
}
31 changes: 31 additions & 0 deletions docs/worklog/2026-09-23-next-section-canon-decision.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 2026-09-23 — `## 다음` 정본 결정 (rustjava-2026-09-23-stale-next-pointer-and-euc-kr-boundary-adopt-p1)

채택: `2026-09-23-stale-next-pointer-and-euc-kr-boundary#p1`. 결정 = **⒝ 얇은 층**.

## 반증 먼저
- ⒜ 세 재발은 같은 형태(닫힌 항목이 절에 남음)인가 — **예**, 그리고 형태가 하나 더 좁혀진다: ★**지목을 쓴 회차 ≠ 닫은 회차**.
③번 실측: `6521c79f`(09-11 10:58)가 「다음 실작업 = ③의 null-guard」를 **썼고**, `6da7d66f`(09-11 17:22 · #36)가 그 일을 **닫으면서 절을 안 건드렸다**.
⇒ 사료의 「쓰인 날 이미 낡아 있었다」는 부정확하다 — 쓸 때는 옳았고 **6시간 뒤** 낡았다.
- ⒝ 규정이 있었나 — **있었다**. 「닫히는 즉시 닫아라」가 `4bb796de`(2026-08-27)부터 STATE.md 에 있다. 이후 2회 더 깨졌다.
안 지켜진 이유 = 닫는 회차의 티켓은 `## 다음` 을 모른다(티켓 본문에 없다). 반면 카드는 발권 티켓이 `adoptedProposals` 기록을 **명시 요구**해 닫는 회차가 알고 닫는다.

## 비교
| 선택지 | 비용 | 잃는 것 |
|---|---|---|
| ⒜ 현행(손 갱신) | 재발 3회/27일 · 최근 1회 `LANE_IDLE` 1088분 · 중복 발권 1 | 0 |
| ⒝ 얇은 층 | 절 1회 재작성 · 본문 3항목(ref 9 · PR 1) | 산문 근거(사료로 이동) · 낡음 자체는 남되 줄당 조회 1회로 보인다 |
| ⒞ 카드 정본 · 절 폐지 | 0 | ★tower 술어 열린 카드 **0**(전 32건 injected)이라 정본이 「할 일 없음」을 말함 · 선행 사슬 1(노드 4) · 카드 밖 항목 1(PR #81) |

⒞가 결정적으로 탈락한 이유: `open = 전체 − adopted − declined − injected − dismissed`(wie 회차 술어) 로 재면 이 레인 **0**(전체 102 · adopted 67 · declined 3 · injected 32 · dismissed 0).
`− injected` 를 빼면 **32**. 그 32 중 이 레인이 칠 수 있는 이름을 15개 조회하니 이름 일치 티켓이 있는 것 **4**(queued 2 · 미완 2), **없는 것 11**
(예: `link-lambdametafactory#p0/#p1` 주입 09-17 21:58 → `directives/processed/` 로 처리됐는데 `tasks/` 에 그 ref 문자열 0).
⇒ 카드만 두면 이 11건은 어디에도 안 보인다. ※이름 기반 조회라 다른 이름 티켓은 못 잡는다 — 「없다」가 아니라 「이름 일치 0」.

## 재측(⑵)
새 ⓪ 의 ref 8개 전건: origin/main `docs/worklog/*.json` 의 adopted/declined 에 **0회** ⇒ 전건 열림. `java.lang.invoke` 디렉터리 부재(0). PR #81 `OPEN`·`CONFLICTING`(워밍 후 재조회).

## 총괄 몫(발권 측 · 이 레인은 무접촉)
- 주입(`injected`)되고 `directives/processed/` 로 간 RustJava 카드 중 이름 일치 티켓이 없는 11건의 처분 확인 — tower 가 이미 숨겼으므로 발권도 기각 기록도 없으면 조용히 사라진다.

## 후속
없음(새 제안 0 · 검사기 0).
Loading