fix(M01): 별칭 복사 gather — 사용자 변수가 별칭과 이름이 겹치면 조용히 안 바꾸고 저장 막음

- 교차 검증 어긋남 1건(사용자가 별칭과 같은 이름의 입력·중간·덧줄을 새로 만들면 되돌릴 때
  그 이름이 조용히 찾기() 원문으로 바뀌던 것) — gather 에서 별칭 이름을 그 순간의
  입력·중간·덧줄 이름(_taken)과 견줘 겹치면 FormulaError(400) · 자동 이름 바꾸기는
  화면 개입 없이는 어느 쪽 식인지 못 가려 안전하지 않아 넣지 않음
- 재현 시험 추가 · 전체 로직 1,354줄 펴고 되돌리기 어긋남 0건 재확인 ·
  resources/master_data/ref/_검증_별칭_복사.md 에 「고친 뒤」 덧붙임
This commit is contained in:
2026-09-21 21:20:36 +09:00
parent f6b832456d
commit c34f72b2d7
3 changed files with 56 additions and 1 deletions
@@ -0,0 +1,21 @@
# 별칭 복사(3-4) 검증 — 어긋난 것만
읽기 전용 검증 · 사본 폴더에서만 저장(정본·대장·키 대장 안 바뀜 → 시험 GX 지울 것 없음).
## 어긋남 1건
- **사용자가 별칭과 같은 이름의 자기 변수를 만들면 조용히 원문 부르기로 바뀜** (`master_copy.gather``_unmask`)
- 재현: `GF000219` 를 펴서 별칭 `메쌓기인력` 을 얻은 뒤, 중간에 `메쌓기인력 = 1` 을 더하고 수량 칸을 `메쌓기인력 * 2` 로 씀 → 되돌리면 수량 칸이 `찾기(QF000421, …) * 2` 로 바뀌고 사용자 변수는 안 쓰인 채 남음. 오류 없이 저장됨.
- 원인: `gather` 가 별칭 이름을 입력·중간·덧줄 이름과 견주지 않음(펴기 쪽 `_taken` 은 견줌).
- 고칠 곳: `gather` 에서 별칭 이름이 입력·중간·덧줄 이름과 같으면 `FormulaError`.
## 어긋남 없음 (확인한 것)
- ① 정본 40개(산림 9 · 건설 31 · 찾기 많은 8 · 호표 요소에 로직() 14 · 덧줄 13 포함): 펴고 그대로 되돌려 저장 → 40/40 원본과 글자 같음 · 같은 입력 계 40/40 같음.
- ② 별칭 이름 겹침 0건 · 기존 이름과 겹침 0건. 낱말 일부(`별칭량` · `별칭_2`) · 작은따옴표 안 · 이미 원문인 부르기 안 · 점 뒤(값 칸 이름) 는 안 바뀜. 같은 별칭에 두 원문은 막음.
- ③ 호표 요소 안 `로직()` 14개 별칭으로 보였다가 원문으로 돌아옴.
- ④ 저장한 GX 40개 틀·로직 검사 통과(대장 넣은 검사 · 정본 전체 검사 0건).
## 고친 뒤
- `gather` 에 이름 겹침 검사 더함 — 별칭 이름이 그 순간 입력·중간·덧줄 이름(`_taken`)과 같으면 `FormulaError`(400) · 조용히 안 바꾸고 막음(가림 자동화는 화면 개입 없이는 안전하게 못함). 재현 사례 다시 돌리면 막힘 확인 · 전체 로직 1,354줄(40개 표본의 상위 집합) 펴고 되돌리기 어긋남 0건 그대로 · 시험 `test_m01_copy.py` 추가.