# execute 진입부 — 세 가드와 그 거부 경로
83:    if (!circuitBreaker.tryAcquirePermission()) {
85:      throw new HttpCircuitOpenException(
88:    if (!rateLimiter.tryAcquirePermission()) {
90:      throw new HttpRateLimitRejectedException(
93:    if (!bulkhead.tryAcquire()) {
94:      rateLimiter.onCompleted();
96:      throw new HttpBulkheadRejectedException(
120:    rateLimiter.onCompleted();

# 정상 경로의 반납
  private void releaseAttemptPermits() {
    bulkhead.release();
    rateLimiter.onCompleted();
  }

# AttemptCircuitBreaker 의 추상 연산 전수
  boolean tryAcquirePermission();
  void onSuccess(long durationNanos);
  void onError(long durationNanos, Throwable failure);
  String state();

# releasePermission — src 아래 java 매치 수
0
# releasePermission 이 등장하는 파일 (저장소 전체)
docs/superpowers/specs/2026-07-27-httpclient-production-capability-design.md
