GNX ECIGEM
07 · API Contract & Execution Boundary

API 계약 및 실행 경계

엔진 외부에 노출되는 결정 표면의 입출력 계약과, 그 경계 밖에서 보장되지 않는 사항을 규정합니다. 표현은 구현 증거와 1:1로 대응합니다.

결정 입력 (request)

POST /api/decide
{
  "tenant_id":    "TN-9901",
  "surface_type": "API_GATEWAY",
  "facets":       "type:read|scope:orders",
  "scope":        "BACKEND_API_EXECUTION",
  "events":       ["STATE_TRANSITION_1", "STATE_TRANSITION_2", ...]
}

출생점은 HMAC_SHA256( tenant_id ∥ surface_type ∥ time_bucket(BE u64) ∥ facets )로 산출되며, time_bucket = unix_secs / 10입니다. 동일 입력은 동일 10초 버킷 내에서 동일 서명을 산출합니다.

결정 응답 (response)

200 OK
{
  "dot_id":         "<uuid-v4>",
  "birth_context_hash": "<blake3>",
  "hmac_signature": "<hex>",
  "time_bucket":    178260xxxx,
  "decisions":      [{ "event_type":"...", "decision":"Allow|Watch|Drop" }],
  "edge_count":     6,
  "odd_state":      true,
  "final_decision": "Drop",
  "binding_status": "FailInert",
  "effect_scope":   null,
  "check_clearance":"FAIL_INERT: 원문은 보존되나 기능적 효력 획득이 영구 차단됨",
  "receipt": { "prev_hash":"...", "current_hash":"...", "timestamp": 178260000000 },
  "source":         "ecigem_core"
}

결정 규칙 (구현 일치)

경계 밖 (out of scope)

fail-closed. 산출 실패·시간 초과·서명 불일치는 효력 부여가 아니라 효력 보류로 처리됩니다. 어떤 경로도 무결성 검증을 우회하여 Active를 산출하지 않습니다.