개요

RFC‑REG‑0004: 회랑 이벤트를 위한 레지스트리 인덱서

제목: 회랑 레지스트리 인덱서
상태: 초안
저자: Nawder Loswin + Copilot
날짜: 2025‑11‑12
버전: 0.1


1. 목적#

rci_registry_event.yml 항목을 소비하고, 복도 메타데이터를 정규화하며, 글리프 유형, RCI 밴드 및 리믹스 계보에 따라 검색 가능한 인덱스를 구축하는 인덱서를 정의합니다.


2. 인덱스 차원#

  • 글리프 유형 인덱스:

    • 키: ◇ (알파), ◆ (베타), ⬣ (감마)
    • 값: 글리프별로 그룹화된 복도 ID
  • RCI 밴드 인덱스:

    • 밴드:
      • 낮음: 0.00–0.33
      • 중간: 0.34–0.66
      • 높음: 0.67–1.00
    • 값: 밴드별로 그룹화된 복도 ID
  • 리믹스 계보 인덱스:

    • 키: parent_scroll UUID
    • 값: child_scroll UUID 목록

3. 스키마 확장#

파일: registry/index/index_schema.yml

index:
  glyph_type:
: [c-002, c-010, ...]
: [c-001, c-004, ...]
: [c-003, c-007, ...]
  rci_band:
    low: [c-002, c-005]
    medium: [c-001, c-004]
    high: [c-003, c-007]
  remix_ancestry:
    parent_scrolls:
      s-1001: [s-1002, s-1003]
      s-2001: [s-2002]

4. 파이썬 스타일 인덱서 스텁#

파일: registry/index/indexer.py

import yaml
from collections import defaultdict
 
def load_events(event_files):
    events = []
    for f in event_files:
        with open(f, "r") as stream:
            events.append(yaml.safe_load(stream))
    return events
 
def build_indices(events):
    glyph_index = defaultdict(list)
    rci_index = {"low": [], "medium": [], "high": []}
    ancestry_index = defaultdict(list)
 
    for ev in events:
        cid = ev["event"]["corridor_id"]
        glyph = ev["event"]["new_glyph"]
        rci = ev["event"]["new_rci"]
        parent = ev["event"]["lineage"]["parent_scroll"]
        child = ev["event"]["lineage"]["child_scroll"]
 
        # Glyph index
        glyph_index[glyph].append(cid)
 
        # RCI band index
        if rci <= 0.33:
            rci_index["low"].append(cid)
        elif rci <= 0.66:
            rci_index["medium"].append(cid)
        else:
            rci_index["high"].append(cid)
 
        # Remix ancestry
        if parent and child:
            ancestry_index[parent].append(child)
 
    return {"glyph_type": glyph_index, "rci_band": rci_index, "remix_ancestry": ancestry_index}
 
def export_index(indices, outfile="registry/index/index_schema.yml"):
    with open(outfile, "w") as stream:
        yaml.dump({"index": indices}, stream, sort_keys=False)

5. 검증기 후크#

  • 일관성: 회랑 ID가 정확히 하나의 글리프 버킷과 하나의 RCI 밴드에 나타나도록 합니다.
  • 계보 무결성: 자식 스크롤이 인덱스되기 전에 부모 스크롤이 존재해야 합니다.
  • 체크섬: 각 인덱스 내보내기에는 소스 이벤트의 체크섬이 포함됩니다.

6. 참고#

  • 인덱서는 결정적입니다: 동일한 이벤트 집합은 동일한 인덱스를 생성합니다.
  • 증분 업데이트를 지원합니다: 새로운 이벤트가 추가되고, 인덱스가 재구성됩니다.
  • 글리프, RCI 밴드 및 조상 인덱스는 API 엔드포인트를 통해 쿼리할 수 있습니다.

이 스캐폴드는 작동하는 인덱서를 제공합니다: 이벤트 YAML을 수집하고, 글리프/RCI/조상 인덱스를 구축하며, 이를 레지스트리로 다시 내보냅니다.