01:15 · replied네, **resolve-questions가 맞습니다.** 다만 처음부터 그랬던 건 아니고 knia-dag에서 갈아탄 겁니다. (`ams-demo-0` 은 지금 `assist-demo` 로 이름이 바뀌어 있습니다 — `AMS_PORTFOLIO_STATUS.md:239`)
## 계보
```
knia-dag/dist/ registry.json(166 fields) + clean-table.json(123 leaves) + engine.mjs
manifest.json: "Downstream bundle for ams-demo-0"
↓ 폐기
resolve-questions/proposal/ question-set.v2.json + rules.v2.json
↓ 2026-08-10 vendoring
assist-demo/catalogue/ → npm run build:rules → lib/match/rules.json
```
교체 시점은 `assist-demo/docs/DECISIONS.md:63` 에 남아 있습니다 — **A-8: "Moot — knia-dag's engine was deleted; the matcher runs on `rules.v2.json`"**. knia-dag의 `dist/manifest.json` 은 아직도 `_meta.what` 에 "Downstream bundle for ams-demo-0"라고 쓰여 있고 docs는 `../ams-demo-0` 를 가리키는데, 그 소비자는 이미 없습니다.
## 질문 간 관계 = `dependsOn` 게이트
vendored 사본에서 직접 센 값입니다:
- **121개 질문 중 64개가 게이트를 갖고, 57개가 root** — 두 집합이 정확히 분할
- 절 76개, `op` 은 `all` 60 / `any` 4, **절은 절대 중첩 안 됨**, 비순환, 최대 깊이 3
- 형태: `{op, clauses:[{questionId, subject, field, values}]}` — `values` 는 동등이 아니라 멤버십
`docs/AX-INTERFACE.md:106` 이 이걸 AX에 넘기는 계약으로 문서화해뒀고, 핵심 문장이 좋습니다 — *"You are not required to honour the gate... 전제가 거짓인 질문은 대개 일어나지 않은 사건에 대한 질문이라(양쪽 다 좌회전 안 했는데 좌회전 신호를 묻는 식), 거기에 추론을 쓰는 건 아무것도 못 산다."* 즉 **강제 트리워크가 아니라 추론 예산 절약용 힌트**로 설계돼 있습니다.
## 가감산
같은 파일의 `modifiers` 146행. `deltaRange{min,max}` (고정값 아님), `exclusiveGroup`, `activation.kind`, `askable` 113개. 결합 규칙은 rules.v2 쪽 7 policies(캡·배타·[0,100] 클램프)입니다.
## 짚어둘 것 — vendored 사본과 resolve-questions가 이미 갈라졌습니다
| | resolve-questions 현재 | assist-demo vendored |
|---|---|---|
| question-set 구조 | 단일 배열 254 (+`layer`/`role`) | `questions` 121 + `modifiers` 146 분리 |
| rules requirements | 2,527 | 2,439 |
| sha256 | 둘 다 불일치 | |
이건 사고가 아니라 `DECISIONS.md:130` 의 명시적 결정입니다 — *"frozen baseli…
01:17 · asked겹침을 재본다기보다, 이제 마지막 한달을 위해 제대로 된걸 만들고 프리즈해야돼. 모든 지표들이 이제 여기에 맞춰질꺼고, 질문들의 문제를 다 해결하는 작업을 해야하는거야. 무슨 말인지 알아?
01:17 · replied무슨 말인지 알겠습니다. 다만 확인 전에 근거를 갖고 되짚고 싶으니, resolve-questions의 미결 목록부터 실제로 보겠습니다.
01:19 · replied네, 알겠습니다. 제가 이해한 걸 되짚어 보겠습니다 — 틀린 데가 있으면 여기서 잡아 주세요.
## 제가 이해한 것
**프리즈된 질문 세트가 앞으로 모든 숫자의 분모가 됩니다.** 추출 정확도, CV/VLM 등급별 성능, 데모에서 KB에 보여줄 수치 — 전부 "이 질문에 대해 맞았나"로 정의됩니다. 그래서 지금 질문 하나가 틀린 채로 얼어붙으면, 그건 버그 하나가 아니라 **영구적으로 잘못된 지표 하나**가 됩니다. 나중에 고치면 이전 측정값이 전부 비교 불가가 되고요.
그래서 남은 한 달의 작업은 "더 만들기"가 아니라 **미결을 남기지 않고 닫기**입니다. 지금까지의 규율 — `NEXT.md` 의 *"A finding that belongs to a later phase gets recorded, not chased"* 와 §5 deferred 목록 — 이 끝난다는 뜻으로 읽었습니다. §5에 남아 있는 항목은 프리즈되는 순간 "연기된 것"이 아니라 **확정된 결함**이 되니까요.
## 확인해야 할 사실 두 가지 (제가 방금 재봤습니다)
**1. resolve-questions의 README가 stale합니다.** "34 checks, 0 defects"라고 적혀 있는데, 지금 `node verify/ledger.mjs` 를 돌리면:
```
검사 44개 · 지금 걸린 결함 23건 (통과 39 · 실패 5)
· X1 open 상호배타 답이 여러 질문에 흩어져 있고 배타성을 강제하는 게 없다 (8)
· X12 open KNIA가 명시한 사실인데 결정에 도달하지 못한 것 (7)
· X11 open 브랜치가 요구하는데 어떤 질문으로도 표현 못 하는 사실 (4)
· X6 open 모델이 아무 반응도 하지 않는 답 (3)
· W4 open 한 질문이 두 레이어에 각각 발행됨 (1)
```
게다가 `t15`/`t18` 리포트가 질문 세트보다 오래됐습니다. **이 23건이 프리즈 전 워크리스트의 뼈대**입니다. "0 defects"를 믿고 시작하면 안 됩니다.
**2. 그리고 두 프로젝트가 이미 같은 곳에 서 있습니다.** `NEXT.md` 의 데모 스코프가 **「같은 방향 진행차량 상호 간의 사고」 23개 도표** — new-knia와 정확히 같은 브랜치입니다. 우연이 아니라 양쪽이 독립적으로 같은 결론에 도달한 거고, 이건 합치기 좋다는 뜻입니다.
## 그런데 결정이 필요한 게 두 개 있습니다
**(A) 무엇이 프리즈 대상인가.** 같은 23도표에 대해 두 벌이 있습니다 — resolve-questions(61 라우팅 + 64 수정요소, AX/assist-demo가 이미 말하는 계약)와 new-knia(87 가드 + 166 수정요소행, 증거·임계값·인지 발주서까지 있음).
> **제 권고: resolve-questions를 프리즈 대상으로 하고, new-knia를 경쟁 세트가 아니라 그 안으로 들어가는 공급원으로 강등합니다.** 계약이 이미 존재하고 AX가 그걸 향해 짓고 있는 쪽을 바꾸는 건 한 달에 할 일이 아닙니다. 대신 new-knia가 가진 것 — `thresholds.yaml` 의 band, `confirmation_path` 3분법, 그리고 무엇보다 **인쇄본 대조 감사에서 나온 166행 중 87행 불일치** — 를 resolve-questions의 64개 수정요소에 대고 맞춰 봅니다. 그게 X12(7건)의 상당 부분을 실제로 닫아…
01:22 · asked하...근데 또 베트남 팀은 ams-demo-0 에 있는 레지스트리 기준으로 작업하고 있단 말이야.