Skip to content

perf(nclex): 고위험 A2A 3레인 평가 wall-clock을 3분 이하로 단축 #1815

Description

@jinon86

요약

NCLEX 고위험 콘텐츠 PR의 broker-backed A2A 평가에서 현재 wall-clock을 지배하는 병목은 브로커 대기나 레인 직렬화가 아니라 content_clinical 모델 실행이다.

독립 워커 3개, exact-head 검증, 고위험 판정 기준, 서명·provenance를 약화하지 않고 다음을 묶어 전체 평가 중앙값을 3분 이하로 낮춘다.

  1. 임상 레인의 출력 스키마 재시도 제거
  2. 요청 모델·thinking과 실제 런타임 모델의 일치
  3. 동일 입력을 이용한 모델/adapter A/B 후 지연 기반 라우팅
  4. 레인별 source packet 경량화와 공통 결정론적 preflight
  5. 유효한 BLOCK 증거 보존으로 진단 레인 재실행 제거

관측 기준선

2026-08-13 broker의 최근 terminal NCLEX intent=analyze 작업 30건을 본문 비공개·메타데이터 전용으로 집계했다.

레인/구간 표본 p50 추가 관측
broker claim 대기 최근 표본 4~8초 전체 wall-clock의 주병목이 아님
content_clinical 6 265초 평균 306초, 평균 6.2 model requests
evidence_adversarial 13 81초 5건은 review_verdict_failed
high_risk_safety 7 161초 전부 성공
evidence_adversarial_diagnostic 2 142초 formal BLOCK 세부 증거 유실 뒤 재실행된 사례 포함

content_clinical telemetry가 존재하는 표본은 **6/6 모두 schemaRetries > 0**였다. 평균 source packet은 약 70KB였지만, 52KB 작업이 약 520초 걸린 사례도 있어 바이트 크기만으로 지연을 설명할 수 없다.

세 고위험 레인은 이미 병렬 dispatch되므로 가장 느린 임상 레인이 round wall-clock을 지배한다. 폴링 간격이나 브로커 동시성만 조정해서 얻을 수 있는 이득은 수 초 수준이다.

또한 실제 receipt에서 요청 모델과 actualRuntimeModel이 달랐던 사례가 있다. 현재 piri analysis bridge는 task flags보다 worker environment pin을 실제 모델로 사용하고 modelInheritanceMode=bridge_env_pin을 보고한다. 모델/사고수준 최적화 전에 이 전달 경계를 바로잡아야 한다.

목표

  • 고위험 NCLEX 3개 독립 레인 전체 wall-clock:
    • p50 ≤ 180초
    • p95 ≤ 300초
  • broker claim p95 ≤ 10초
  • content_clinical output-schema retry rate = 0
  • 요청 모델·thinking과 실제 런타임 선택이 일치하고 receipt로 증명됨
  • 유효한 negative verdict/BLOCK 때문에 동일 소스를 진단 레인으로 재호출하는 횟수 = 0
  • 임상 정확성, 고위험 결함 탐지, reviewer independence, exact-head/provenance 게이트의 회귀 = 0

작업 항목

1. 기준선과 telemetry

  • source body, prompt, 임상 내용, credential을 노출하지 않는 latency report를 추가한다.
  • lane별 queue/run/total latency, source bytes, model requests, schema retries, requested/actual model, terminal reason을 집계한다.
  • schema retry reason을 bounded enum으로 기록한다. 예: extra property, invalid status, markdown/wrapper, missing field, provider failure.
  • provider token/USD 데이터가 없으면 추정하지 않는다.

2. 임상 레인 output-schema 재시도 제거

  • 현재 단순 schema에서 100% 재시도가 발생하는 실제 failure shape를 fixture로 고정한다.
  • deterministic하고 bounded한 정규화/추출로 처리 가능한 경우 provider resend보다 먼저 적용한다.
  • substantive evidence가 없는 generic wrapper나 임의 JSON을 성공으로 승격하지 않는다.
  • schema 검증과 fail-closed 경계를 유지한 상태로 연속 canary에서 schemaRetries=0을 입증한다.
  • model request가 10회를 넘는 표본은 기존 A/B runbook처럼 중단·분류한다.

3. 모델·thinking 전달과 paired A/B

  • task-level workerModel/workerThinking이 piri analysis 실행 경로까지 전달되도록 한다.
  • receipt의 requested/effective/actual model 및 thinking을 서로 구분하고 silent fallback을 금지한다.
  • allowlist의 모델 별칭과 piri CLI canonical model id 정합성을 테스트한다.
  • 동일 digest·동일 임상 패킷으로 최소 5쌍의 paired A/B를 실행한다.
  • latency, schema fit, request count뿐 아니라 correctness, source grounding, high-risk finding recall, actionability를 같은 rubric으로 평가한다.
  • 품질 비열등성이 입증된 조합만 기본 라우팅 후보로 승격한다.

실제 provider A/B/canary는 #1797의 별도 operator approval·요청 예산 경계를 따른다.

4. source packet 투영 경량화

  • refs hash, exact-head, license, similarity처럼 결정론적으로 확인 가능한 공통 검증을 한 번 수행하고 signed preflight receipt로 공유한다.
  • 임상/evidence/safety 레인에 필요한 파일·excerpt만 투영하되, 모든 판정이 source digest와 재현 가능한 evidence reference를 유지한다.
  • 반복되는 refs/evidence 객체는 공통 manifest로 de-duplicate하고 문항은 안정적인 reference만 보유한다.
  • broad packet과 compact packet의 verdict·evidence 동등성을 fixture와 paired canary로 검증한다.
  • source byte 감소 자체를 성공으로 보지 않고 품질·재현성 동등성을 필수 조건으로 둔다.

5. negative verdict 증거 보존

  • substantive output이 있는 BLOCK/negative verdict를 handler lifecycle failure와 분리한다.
  • bounded findings, reviewer identity, evidence refs, receipt id를 보존한다.
  • merge gate는 계속 fail-closed로 동작하되, operator가 원인 확인을 위해 동일 provider 분석을 재실행할 필요가 없어야 한다.
  • 빈 결과, generic acknowledgement, 독립성 위반은 계속 quorum에서 제외한다.

6. latency-aware routing

  • worker capability, 독립성, 팀/recusal, 실제 adapter/model readiness를 먼저 만족한 후보에서만 latency를 보조 점수로 사용한다.
  • 최근 p50/p95, timeout/schema failure 비율, queue depth를 bounded window로 계산한다.
  • 빠르다는 이유로 동일 worker 중복, author self-review, 약한 safety lane, unverified model fallback을 허용하지 않는다.

수용 기준

  • no-provider fixture와 focused tests가 schema failure/normalization/model propagation/negative verdict round-trip을 커버한다.
  • 승인된 동일 입력 5쌍 A/B 결과에 task ids, input digests, telemetry, rubric score, independent scorer evidence가 있다.
  • 승인된 연속 NCLEX 고위험 canary 10회에서:
    • 3개 distinct worker 및 exact-head 검증 100%
    • claim p95 ≤ 10초
    • end-to-end p50 ≤ 180초, p95 ≤ 300초
    • content_clinical schema retry 0
    • requested/effective/actual model 불일치 0
    • 유효한 BLOCK 후 diagnostic provider rerun 0
    • baseline 대비 clinically significant/high-risk finding 누락 0
  • latency 개선 전후의 source bytes, model requests, lane latency와 품질 rubric을 closeout에 기록한다.
  • full CI/CodeQL 및 관련 broker/docker-runner 계약 테스트가 green이다.

기존 이슈와 경계

본 이슈는 위 구현을 복제하지 않고 NCLEX 지연 SLO와 end-to-end 검증을 묶는 실행 트래커다.

안전 경계

이슈 생성만으로 다음 작업은 승인되지 않는다.

  • live broker/worker 배포·재시작
  • provider A/B 또는 canary 호출
  • terminal ACK/replay/prune
  • credential 이동·노출
  • GitHub ruleset/branch protection 변경
  • reviewer quorum, independence, exact-head, signature/provenance 완화

실제 provider 호출과 live rollout은 정확한 revision, 대상 worker, 요청 예산, rollback을 명시한 별도 operator 승인을 받는다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestsource:a2a-brokerA2A broker runtime/task lifecycle/worker registry/evidence source areasource:a2a-docker-runnerA2A Docker runner execution/checkout/artifact evidence source area

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions