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
52 changes: 52 additions & 0 deletions AGENTS.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -80,6 +80,58 @@ print('open cards:',p-a)"
문서에만 둔 채로 유지하지 마라(그 상태가 가장 나쁘다: 규칙은 있고 효력은 없다).
- ⒝ **< 5** ⇒ 의무화해도 카드가 늘지 않았다는 뜻이므로 **의무 자체를 재검토**하라.
Baseline measured 2026-09-04: 9 proposals − 4 disposed = **5 open**. So ⒝ means "fewer than today".

### ★★[2026-09-05 재측 · 사전 등록된 시점에 도달했다] 「부재」를 기계로 잡지 «않는다»

채택 제안 `2026-09-04-worklog-mandate-and-local-gate#p0` 에 대한 **결정**이다.
★**위 「10번째 착지 회차에 재측하라」가 «충족»됐다** — 2026-09-04 이후 착지 회차 **11**.
⇒ ★**골대를 옮기지 않고, 그때 등록한 두 조건을 그대로 재서 판정한다.**

> ★**결정: 「워크로그 «부재»」를 잡는 기계 강제를 «지금은 넣지 않는다».**
> ★**`check-worklog-json.py` 의 «존재하는 `.json` 만 검사한다» 설계와 «소급 금지»는 그대로 둔다.**

**⒜ 미작성 회차 — 사전 등록 임계 `≥ 2 (>20%)`**

| 창(`b3a4cf4..origin/main` · first-parent) | 착지 회차 | 미작성 | 비율 |
|---|---|---|---|
| 규약 착지 이후 **전건** | **15** | ★**1** | **6.7%** |
| ★**규약을 «알 수 있었던» 회차만** | **14** | ★**0** | ★**0%** |

★**그 1건은 `11ef5010`(PR #13 · S2)이고 «규약보다 먼저 갈라졌다» — 옮겨 적지 않고 쟀다**:
PR #13 `createdAt` **2026-08-23T23:37:41Z** ↔ 규약 착지 `b3a4cf4` **2026-08-26T02:57:28Z**(≈2.6일 먼저).
⇒ ★**임계 «2» 미달**(측정 1 · 정상 참작분을 빼면 0).

**⒝ 열린 카드 — 사전 등록 임계 `< 5`**: `.json` **15**개 · proposals **26** − disposed **13** = ★**13 open**
(기준선 **5** → **13**). ⇒ ★**임계 미달**(늘었다 = 의무가 카드를 «만들고» 있다).

⇒ ★★**두 조건 «다» 발화하지 않는다.** 사전 등록한 규칙대로 **문안을 그대로 두고 기계 강제를 넣지 않는다.**

**★약점을 숨기지 않는다 — 이것이 재개 조건의 근거다**
- ⒤★**「100%」는 «단일 집행 주체»의 습관일 수 있다.** 리니지는 **13개**로 갈렸지만(2026-08-27~09-05),
★**git author 는 하나라 «누가 집행했나»를 가릴 수 없다.** ⇒ 일반화의 근거로 쓰지 마라.
- ⒥★**정본 술어는 느슨하다** — 「`docs/worklog/` 를 만졌다」는 **옛 워크로그에 한 줄 추가**도 통과시킨다.
★이번 창에서는 엄격 술어(**새 `.json` 추가**)와 **같은 14** 라 물리지 않았지만, 그 약점은 **남아 있다**.
- ⒦★**실패는 여전히 «조용하다»** — 부재는 어떤 검사도 울리지 않는다. 오늘 그 대가를 치르지 않았을 뿐이다.

**★★재개 조건 — 세는 명령과 «오늘의 값»**
> ★**위 ⒜ 를 다시 재서 «규약을 알 수 있었던 회차 중 미작성」이 «1건이라도» 나오면 이 결정을 다시 연다.**
> ★**「오래됐다」·「불안하다」는 재개 사유가 «아니다».**

```sh
# 미작성 회차(엄격 술어 — 새 .json 쌍을 «추가»했는가) · b3a4cf4 = 규약 착지
for c in $(git rev-list --first-parent b3a4cf4..origin/main); do
git diff --name-status "$c^1" "$c" | /usr/bin/grep -q '^A[[:space:]]*docs/worklog/.*\.json$' || echo "$c no-worklog"
done | /usr/bin/grep -c .
```
★**오늘의 값 = `1`**(그 1건 = 규약 이전 분기 `11ef5010`) ⇒ ★**«2 이상»이 되면 재개**다.

**★재개하면 «무엇을» 만들지 미리 적어 둔다**(그때 설계부터 시작하지 않게):
⒜★**baseline sha 를 쓰지 마라** — 소급 금지를 깨고, 기준선 자체가 낡는다.
⒝★**PR diff 로 «조건부» 판정하라**: 「`REPORT.md` 의 후속 추천 구역을 만졌으면 `docs/worklog/` 에 **새 쌍**도 있어야 한다」.
⇒ 의무가 조건부(「후속 추천을 적은 회차」)이므로 **검사도 조건부**여야 한다. baseline 불요 · 소급 0.
⒞★**정상 참작 경로 = 「그 PR 이 규약 착지보다 먼저 생성됐는가」**(`gh pr view --json createdAt`) — ★**제목·라벨로 봐주지 마라**
(문구는 바뀌고 라벨은 붙이면 그만이다 · 이 저장소가 반복해 규탄한 형태).
⒟★**`check-worklog-json.py` 의 기존 6축을 약화하지 마라** — 「부재」는 **별 축**이다.
## Testing Boundaries
- Keep `rustjava-runtime/tests/classes` limited to Java standard library class and API behavior.
- Test JVM and interpreter semantics, including class initialization, bytecode execution, and monitor behavior, with compiled Java fixtures under `test-data/src` and expected output under `test-data`, executed by `tests/test_class.rs`.
Expand Down
19 changes: 19 additions & 0 deletions REPORT.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
# REPORT

## [2026-09-05] 워크로그 «부재» 기계 강제 판정 — 넣지 않는다 (rustjava-worklog-absence-machine-enforcement-decision)
- 무엇을: 채택 제안 `2026-09-04-worklog-mandate-and-local-gate#p0` 에 대한 **판정**이다.
★**결론: 워크로그 «부재»를 잡는 기계 강제를 지금은 넣지 않는다** — `check-worklog-json.py` 의
「존재하는 `.json` 만 검사한다」 설계와 «소급 금지»를 그대로 둔다. ★**검사기 무접촉 · `.rs` 0줄 · backfill 0**.
- 왜: ★★**의무화 회차가 «데이터를 보기 전»에 등록한 두 임계가 «둘 다» 발화하지 않았다.**
그 문서가 정한 재측 시점(「2026-09-04 이후 열 번째 착지 회차」)에 ★**실제로 도달했고**(실측 **11**),
⒜ 미작성 **1 / 15**(임계 ≥2 미달 · ★그 1건은 규약보다 먼저 갈라진 PR #13 이라 **0 / 14 = 100%**) ·
⒝ 열린 카드 **13**(임계 <5 미달 — 의무가 카드를 **늘렸다**).
⇒ ★**데이터를 본 뒤 기계를 넣는 것은 «골대 옮기기»**다. 등록한 규칙을 지켰다.
- 사용자 영향: **없다**(CI·DoD·검사기 무변경). 회차 절차가 지금 그대로 유지된다.
- 검증: 창·분모를 밝혀 **전수**로 쟀고(`git rev-list --first-parent b3a4cf4..origin/main`),
★**정상 참작도 인용이 아니라 실측**했다(PR #13 `createdAt` 2026-08-23 ↔ 규약 착지 2026-08-26).
★**술어를 둘로 재서**(느슨/엄격) 같은 **14** 임을 확인했고, ★**문서에 박은 재개 조건 명령을 실행해 값 `1` 을 확인**했다.
무회귀: `check-worklog-json.py` **rc=0** · `check-dod-ci-parity.py` **rc=0**.
- ★**약점을 숨기지 않는다**: 「100%」는 **단일 집행 주체**의 습관일 수 있고(리니지 13개지만 git author 는 하나),
정본 술어는 **느슨**하며, ★**실패는 여전히 조용하다** ⇒ 「위험이 없다」가 아니라 「임계가 아직 발화하지 않았다」이다.
- ★**후속 추천**: ⑴재개는 **엄격 술어 값이 2 이상**일 때만(오늘 **1**) ⑵재개 시 설계는 이미 적어 뒀다 —
★**baseline sha 를 쓰지 말고 «PR diff 로 조건부» 판정**하라(의무가 조건부이므로 검사도 조건부여야 한다).

## [2026-09-04] upstream 동기 «정기 축» 판정 — 격차 기반 `behind ≥ 20` (rustjava-upstream-sync-cadence-decision)
- 무엇을: 채택 제안 `2026-09-04-sync-contract-stale-assets-decision#p0` 에 대한 **판정**이다.
★**결론: 동기 회차는 `origin/main..upstream/main` 이 «20 이상»일 때 연다** — 시간(격주·월간) 기반은 기각.
Expand Down
19 changes: 19 additions & 0 deletions STATE.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -23,6 +23,25 @@
(25번째 run, 앞선 24건 전부 red). **PR 대기 — 게이트③ 미착지.**

## 완료
- [rustjava-worklog-absence-machine-enforcement-decision] ★★**워크로그 «부재»를 기계로 잡을지 «판정» — 결론: 지금은 «넣지 않는다».**
채택 제안 `2026-09-04-worklog-mandate-and-local-gate#p0`. ★**`scripts/check-worklog-json.py` 무접촉**(6축 무회귀 · rc=0) ·
`.rs` **0줄** · 과거 backfill **0** · qts 잠금·upstream 리니지·파리티 검사기 **무접촉**.
★★**근거는 «사전 등록된 두 임계»가 «둘 다» 발화하지 않았다는 것 하나다** — 의무화 회차가 **데이터를 보기 «전»에**
`AGENTS.md` 에 등록했고, ★**그 문서가 정한 재측 시점(「2026-09-04 이후 열 번째 착지 회차」)에 실제로 도달했다**(실측 **11**).
★**⒜ 미작성**: 창 `b3a4cf4..origin/main` first-parent **15건 중 1건**(6.7%) — 임계 **≥2** 미달.
★그 1건은 **규약보다 먼저 갈라진 PR #13**(`createdAt` 2026-08-23 ↔ 규약 착지 2026-08-26 · ★**인용이 아니라 실측**) ⇒
★**규약을 «알 수 있었던» 회차만 보면 0 / 14 = 100%**.
★**⒝ 열린 카드**: `.json` 15 · proposals **26** − disposed **13** = ★**13**(기준선 5) — 임계 **<5** 미달(★의무가 카드를 **늘렸다**).
★★**약점을 숨기지 않는다**: ⒤「100%」는 **단일 집행 주체의 습관**일 수 있다(리니지는 13개로 갈렸으나 git author 가 하나다)
⒥정본 술어가 **느슨**하다(「만졌다」는 옛 워크로그 한 줄 추가도 통과 — 엄격 술어로 재도 이번 창은 같은 14)
⒦**실패는 여전히 조용하다** ⇒ 「위험이 없다」가 아니라 「임계가 아직 발화하지 않았다」이다.
★**재개 조건 + 세는 명령 + 오늘의 값 `1`** 을 `AGENTS.md` §Round Worklog 에 박았다(**2 이상이면 재개** · ★엄격 술어).
★**재개하면 만들 것도 미리 적었다**: baseline sha 금지 · ★**PR diff 로 «조건부» 판정**(REPORT 후속 추천을 만졌으면 새 쌍 필수) ·
정상 참작은 `createdAt` 으로(★제목·라벨 금지) · 기존 6축 보존.
★**측정 함정 1건 기록**: 「회차 = 부모 2개」로 세면 **스쿼시 착지를 놓친다**(그 술어로는 12/12 · 정본 술어로 15/1).
★게이트③ 완료: PR #30 — ★★**`--merge` 착지**(★`--squash` 아님 · 등재 repo `contracts/upstream-sync-repos.conf:22`).
머지커밋 sha 는 회신 `merged:` 참조. ★**게이트② 1회차 approve** — 반려 0.
★**착지로 「재개 조건」이 `AGENTS.md` 에 살아 있다**: 엄격 술어 값이 **2 이상**이면 다시 연다(오늘 **1**).
- [rustjava-upstream-sync-cadence-decision] ★★**upstream 동기 «정기 축» 판정 — 결론: ⒝ 격차 기반 `behind ≥ 20`.**
채택 제안 `2026-09-04-sync-contract-stale-assets-decision#p0`. ★**신설 0**(검사기·크론·워크플로) · `.rs` **0줄** · ★**S9 미개시**(behind **0**).
★★**제안의 전제(「벌어진 뒤에 받으면 훨씬 비싸다」)를 «먼저 재서» 반증했다**: 회차 커밋 수 ↔ 충돌의 상관계수 ★**부호가 «음»**.
Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
{
"schema": 1,
"date": "2026-09-05",
"title": "워크로그 «부재»를 기계로 잡을지 판정 — 지금은 넣지 않는다(사전 등록 임계 둘 다 미발화)",
"services": [
"RustJava"
],
"taskId": "rustjava-worklog-absence-machine-enforcement-decision",
"summary": "채택 제안 2026-09-04-worklog-mandate-and-local-gate#p0 에 대한 판정이다. 결론: 워크로그 «부재»를 잡는 기계 강제를 지금은 넣지 않고, check-worklog-json.py 의 「존재하는 .json 만 검사한다」 설계와 «소급 금지»를 그대로 둔다. ★근거는 «사전 등록된 두 임계»가 둘 다 발화하지 않았다는 것이다 — 의무화 회차가 데이터를 보기 «전»에 AGENTS.md 에 등록한 것이고, 그 문서가 정한 재측 시점(「2026-09-04 이후 열 번째 착지 회차」)에 실제로 도달했다(실측 11회차). ⒜ 미작성: 창 b3a4cf4..origin/main 의 first-parent 착지 회차 15건 중 1건(6.7%)이고, 그 1건은 규약보다 먼저 갈라진 PR #13 이다(createdAt 2026-08-23T23:37:41Z ↔ 규약 착지 2026-08-26T02:57:28Z — 인용이 아니라 실측). 규약을 «알 수 있었던» 회차만 보면 0/14 = 100% 다. 임계는 ≥2(>20%) 였으므로 미달. ⒝ 열린 카드: .json 15개 · proposals 26 − disposed 13 = 13 open(기준선 5 → 13). 임계는 <5 였으므로 미달 — 의무가 카드를 줄이지 않고 늘렸다. ★약점은 숨기지 않는다: ⒤「100%」는 단일 집행 주체의 습관일 수 있다(리니지는 13개로 갈렸지만 git author 가 하나라 «누가 집행했나»를 못 가린다) ⒥정본 술어가 느슨하다(「docs/worklog/ 를 만졌다」는 옛 워크로그에 한 줄 추가도 통과시킨다 — 엄격 술어로 다시 재니 이번 창에서는 같은 14 라 안 물렸다) ⒦실패는 여전히 조용하다. ⇒ 그래서 재개 조건을 엄격 술어로 적고 오늘의 값 1 을 함께 박았다(2 이상이면 재개). ★재개하면 무엇을 만들지도 미리 적었다 — baseline sha 를 쓰지 말고 PR diff 로 조건부 판정하라(「REPORT.md 후속 추천 구역을 만졌으면 docs/worklog/ 에 새 쌍도 있어야 한다」 · 의무가 조건부이므로 검사도 조건부여야 한다 · 소급 0), 정상 참작은 「그 PR 이 규약 착지보다 먼저 생성됐는가」로 판정하고 제목·라벨로 봐주지 마라.",
"changes": [
"AGENTS.md §Round Worklog — 「[2026-09-05 재측] 「부재」를 기계로 잡지 않는다」 절 신설. 사전 등록 재측 시점 도달 확인 · ⒜⒝ 두 임계 실측표 · 정상 참작 실측(PR #13 createdAt) · 약점 3건(단일 집행 주체 · 느슨한 술어 · 조용한 실패) · 재개 조건(엄격 술어 명령 + 오늘의 값 1) · 재개 시 만들 것의 설계 4항(baseline 금지 · 조건부 PR diff 판정 · createdAt 기반 정상 참작 · 기존 6축 보존).",
"docs/worklog/2026-09-05-worklog-absence-enforcement-decision.{md,json} 신설.",
"STATE.md · REPORT.md — 회차 기록.",
"★scripts/check-worklog-json.py 무접촉(6축 무회귀 · rc=0) · 과거 backfill 0 · qts 잠금 무접촉 · upstream 동기 리니지 무접촉 · check-dod-ci-parity.py 무접촉."
],
"deploy": {
"sha": "",
"urls": []
},
"verification": "★사전 등록 재측 시점: git rev-list --first-parent b3a4cf4..origin/main 중 2026-09-04 이후 착지 회차 = 11 ⇒ 「10번째에 재측하라」 충족. ⒜ 창 b3a4cf4..origin/main(현 main 4b91e8f) first-parent 15건 전수 — 느슨 술어(docs/worklog/ 를 만졌다) 통과 14 · 엄격 술어(--name-status 의 A 로 새 .json 추가) 통과 14 ⇒ 두 술어가 같은 수. 미작성 1건 = 11ef5010(PR #13 · S2 · squash 라 부모 1개). ★정상 참작 실측: gh pr view 13 -R Jun025/RustJava --json createdAt → 2026-08-23T23:37:41Z ↔ git log -1 --format=%cI b3a4cf4 → 2026-08-26T11:57:28+09:00(= 02:57:28Z) ⇒ PR 이 규약보다 약 2.6일 먼저 생성됐다. ⇒ 규약을 알 수 있었던 회차만 보면 0/14. ★주의: 부모 2개(머지커밋)만 세는 술어는 스쿼시 착지를 놓친다 — 처음 그렇게 세어 12/12(미작성 0)가 나왔고, AGENTS.md 정본 술어(first-parent 전건)로 다시 재서 15/1 을 얻었다. 그 차가 정확히 PR #13(스쿼시)이다. ⒝ 열린 카드: origin/main 의 docs/worklog/*.json 15개에서 proposals 26 · adopted+declined 13 ⇒ 13 open(기준선 5). ★리니지 다양성: 착지 14건의 태그 base 는 13개로 갈렸다(2026-08-27~09-05) — 단일 티켓이 아니다. 단 git author 는 하나라 «집행 주체»는 가릴 수 없다(회신에 한계로 명시). ★문서에 박은 재개 조건 명령을 그 자리에서 실행해 값 1 을 확인했다(문서 기재와 일치). ★무회귀: python3 scripts/check-worklog-json.py rc=0(14파일 0문제) · python3 scripts/check-dod-ci-parity.py rc=0 · docstring 「It never demands a .json for an existing .md — the convention is not retroactive.」 그대로 · .rs 변경 0.",
"issues": [
"★★사전 등록된 임계를 «지켰다» — 데이터를 본 뒤 기계를 넣고 싶어졌더라도 그것은 골대 옮기기다. 의무화 회차가 데이터를 보기 전에 「⒜ ≥2 면 문안을 빼거나 기계 강제로 올려라 · ⒝ <5 면 의무를 재검토하라」를 등록했고, 실측은 ⒜ 1 · ⒝ 13 으로 둘 다 미달이다.",
"★「100%」를 일반화의 근거로 쓰지 마라 — 리니지는 13개로 갈렸지만 git author 가 하나라 «누가 집행했나»를 가릴 수 없다. 표본이 단일 집행 주체의 습관을 반영할 가능성이 남아 있고, 그것이 재개 조건을 «느슨하게»(1건이라도) 잡은 이유다.",
"★AGENTS.md 정본 술어가 느슨하다 — 「docs/worklog/ 를 만졌다」는 옛 워크로그에 한 줄 추가도 통과시킨다(이 리니지의 게이트③ 원장 동봉이 실제로 그런 커밋을 만든다). 이번 창에서는 엄격 술어와 같은 14 라 물리지 않았으나 약점은 남아 있어, 재개 조건은 엄격 술어로 적었다.",
"★측정 함정 1건을 기록한다 — 「회차 = 부모 2개 머지커밋」으로 세면 «스쿼시 착지»를 놓친다. 처음 그 술어로 12/12(미작성 0)를 얻었고, AGENTS.md 정본 술어로 다시 재서 15/1 을 얻었다. 그 차가 정확히 PR #13 이다.",
"★실패는 여전히 조용하다 — 부재는 어떤 검사도 울리지 않는다. 이 결정은 「위험이 없다」가 아니라 「사전 등록 임계가 아직 발화하지 않았다」이다.",
"머지하지 않았다 — 게이트②·③은 별 세션이다. ★게이트③은 등재 repo 라 --squash 금지 · merge_strategy: merge 필수.",
"★[게이트③ 집행] PR #30 을 --merge 로 착지시켰다(등재 repo — 스쿼시는 계보를 접는다). 동봉 «전» head 가 검수 핀 5ea7eafbb3e241c8f4a2079ec76b97334fef96f8 과 일치함을 확인했고(git fetch 를 먼저 쳐 거짓 일치를 막았다), 동봉 전/후 sha 는 머지 회신에 적었다. 착지 diff 5파일 전건 문서 · 배포 워크플로 0개 ⇒ 배포 0 · 코드(.rs) 변경 0 · scripts/check-worklog-json.py 무접촉(6축 무회귀). ★이 착지로 재개 조건과 «재개 시 설계 4항»이 AGENTS.md 에 상주한다 — 다음 재측 회차는 설계부터 시작하지 않아도 된다."
],
"proposals": [],
"resolvedIssues": [
"2026-09-04-worklog-mandate-and-local-gate#p0 — 「워크로그 미작성을 기계로 잡을지 판정하라」. 사전 등록된 재측 시점에 도달해 두 임계를 그대로 재고 «지금은 넣지 않는다»로 판정했으며, 재개 조건(엄격 술어 명령 + 오늘의 값 1)과 재개 시 설계 4항을 AGENTS.md §Round Worklog 에 박았다."
],
"adoptedProposals": [
"2026-09-04-worklog-mandate-and-local-gate#p0"
],
"declinedProposals": []
}
Loading