docs: 단위 4 감사 3라운드 반영 — Gate setup 검증 기록, source-state-plan H-94 문단을 __apply 문단 포인터로, HasBlockedEmit 각주
Co-authored-by: qwreey <me@qwreey.moe>
This commit is contained in:
parent
8dc4498e7a
commit
40b8129612
3 changed files with 6 additions and 5 deletions
|
|
@ -221,7 +221,7 @@ blocker:Off() -- onunblock 핸들 실행 → HasBlockedEmit 확인 → 딱 한
|
|||
아님) — 원래 근거는 배선 동사 `state:Block(blocker)`와의 충돌이었고,
|
||||
**[2026-08-28 `H-158`]** 그 동사가 `state:Apply(blocker)`로 바뀐 뒤에도 이름은
|
||||
유지한다(`On`/`Off`가 `IsOn`/`IsBlocked`와 이미 짝이고, 바꿀 이유가 없다).
|
||||
- 필드: **`IsBlocked`**(Blocker 자신의 On/Off 상태), **`HasBlockedEmit`**
|
||||
- 필드: **`IsBlocked`**(Blocker 자신의 On/Off 상태), **`HasBlockedEmit`**(**[2026-08-29]** 개념 이름 — 리터럴 필드가 아니라 게이트 `withheld`의 `next(…) ~= nil` 파생값, 위 "`HasBlockedEmit`은 게이트 흡수 집합의 특수형이다" 절)
|
||||
(gated state의 대기 플래그, `Is`/`Has` 접두어로 불리언임을 바로 알려줌).
|
||||
- 메소드: `state:Apply(blocker) -> state`(**[2026-08-28 `H-158`]** 옛 `state:Block(blocker)` — 별도 메소드가 아니라 `Blocker.__apply`).
|
||||
- **[2026-08-18 신설] `IsOn() -> boolean`**(`IsBlocked` 필드를 그대로 읽는
|
||||
|
|
|
|||
|
|
@ -1136,10 +1136,9 @@ then return factory(self) else return factory:__apply(self) end end` — 즉
|
|||
여기 한때 `factory: (State<T>) -> U): U`라 적혀 있었는데, 그 시그니처는
|
||||
**함수만** 받으므로 위 `H-94` 항목이 확정한 "지정된 필드를 가진 객체"
|
||||
형태를 **거부한다** — `state:Apply(Debounce{...})`가 그대로 타입에러다.
|
||||
파라미터는 **함수 또는 그 필드를 가진 객체**를 받고 반환은 열어둔다 —
|
||||
**[2026-08-29 `H-179`]** 함수 쪽은 제네릭 `U`, 객체 쪽은 `any`(호출부가 명시)
|
||||
(필드 이름은 `__apply` — **[2026-08-28 `H-158`]**; 시그니처는 위 항목대로 M2 단위 4
|
||||
`H-179`에서 확정). 아래 논거는 **반환 쪽**에
|
||||
파라미터는 **함수 또는 그 필드를 가진 객체**를 받고 반환은 열어둔다 — 정확한
|
||||
표기(함수 쪽 제네릭 `U` / 객체 쪽 `any`, 교집합 오버로드)는 **위 `__apply` 시그니처
|
||||
문단이 소스**(`H-179`; 여기 반복하지 않는다). 아래 논거는 **반환 쪽**에
|
||||
대한 것이라 그대로 유효하다 — Modifier의
|
||||
`Apply`는 `factory: (M) -> M`으로 같은 타입을 유지해야 체이닝이
|
||||
이어지지만, State의 `:Apply`는 팩토리가 State가 아닌 값(예: 최종
|
||||
|
|
|
|||
|
|
@ -311,6 +311,8 @@ lazy 하게 읽으면 되는거 아냐? Set 재진입 같은 경우는, 반복
|
|||
- 단위 3 감사 1라운드 잔여: `Observer`/`Effect` 생성자의 `fn` 타입 검사(`error(…, 2)`)는
|
||||
문서에 없고 코드가 더한 입력 검증 — `newNode` dep 검증과 같은 급(`architecture.md` 계약의
|
||||
예), 기록만. 스파이크 `05`는 `spec.state`/`spec.effect` 3번이 대체 → `done/`.
|
||||
- `Impl.Gate`의 `setup` 타입 검사와 `setup(emit)` 반환값 검사(`error(…, 2)`) 둘도 문서에
|
||||
없고 코드가 더한 입력 검증 — `newNode` dep 검증·단위 3의 `fn` 검사와 같은 급, 기록만.
|
||||
- `Debounce`/`Throttle`·`setTimeout`/`clearTimeout` 주입 op는 백로그 — 이번 단위에 없음.
|
||||
|
||||
**툴링 사실 둘**(설계 아님, 다음 단위가 알아야 함):
|
||||
|
|
|
|||
Loading…
Reference in a new issue