Skip to content

load-protocols.js의 프로토콜/유틸리티 판별이 하드코딩 배열의 보수 관계뿐 — 등록 누락이 무증상 면제가 된다 #770

Description

@jongwony

관찰

scripts/load-protocols.js:201-202

isProtocol: protocolNodeSet.has(pluginDir),
isUtility: !protocolNodeSet.has(pluginDir),

protocolNodeSet(:146)은 CANONICAL_PROTOCOL_SET(:41-45)에서 만들어지고, 그 집합은 CANONICAL_PRECEDENCE(:30-34)의 소문자화 + anamnesis + katalepsis다. 즉 프로토콜 여부는 하드코딩 배열의 원소인지로만 결정되고, 유틸리티는 그 여집합으로 정의된다. 제3의 상태가 없다.

귀결

새 프로토콜 디렉터리를 추가하고 CANONICAL_PRECEDENCE에 등록하지 않으면 isUtility: true가 된다. isProtocol 필터를 통과해야 하는 검사(:218, :223 경유)들이 그 디렉터리를 말없이 건너뛴다. 실패가 아니라 무증상 면제라서 검사 결과는 초록으로 남는다.

docs/co-change.md의 "New protocol added" 행이 CANONICAL_PRECEDENCE 갱신을 요구하지만, 그 표는 강제 채널이 없는 손유지 문서다 (#764).

미해결 — 수정 기준

구조적 판별식으로 대체하려 했으나 후보 하나가 실패했다. MORPHISM 블록 보유 여부는 판별식이 되지 못한다: 모든 핵심 프로토콜이 보유하지만 유틸리티 중 misuse, probe, realign, steer도 보유한다.

후보 방향:

  1. 3상태화protocol / utility / 미분류로 넓히고 미분류를 명시 실패로 올린다. 판별식을 찾지 않아도 침묵만은 없앤다.
  2. 등록 누락 전용 검사 — 플러그인 디렉터리 집합과 CANONICAL_PROTOCOL_SET의 차집합이 알려진 유틸리티 목록과 일치하는지 검사한다. 유틸리티 목록도 손유지가 되므로 문제를 한 칸 옮기는 것에 가깝다.
  3. 구조적 판별식 재설계 — 프로토콜만 가지는 형식 블록 조합을 찾는다. 위 실패는 단일 블록으로는 안 된다는 것만 보여줬을 뿐, 조합 판별식은 아직 시도되지 않았다.

1번이 가장 싸고, 판별식 문제를 열어둔 채로도 침묵을 없앤다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions