TypeScript · AI-assisted Delivery · Public Reproduction

Accepted 이후를
신뢰 가능한 상태 전이로.

브라우저의 풀이 성공을 로컬 queue에 보존하고, GitHub Draft PR·검증·AI review·exact-head gate·병합·Pages까지 연결했습니다. 캡처 성공, 현재 PR 상태, 병합 권한을 서로 다른 책임으로 취급한 공개 프로젝트입니다.

Product & Automation Engineer · 2026.07–현재 · 공개 저장소 2개

778Dashboard tests51 files · failed 0
69Extension tests11 files · failed 0
17 / 665생성 snapshotusers / submission records
518정적 pagespinned build 성공

System Model

기록과 권한의 기준을 분리했습니다.

Extension은 Accepted 결과를 감지해 코드와 문제 문맥을 로컬 pending queue에 먼저 보존합니다. GitHub의 live PR·branch 상태가 확정 기준이며, 로컬 snapshot은 화면 표시용 cache로만 사용합니다.

Accepted → queue → Draft PR → exact-head gate → merge → Pages클라이언트 감지와 서버 측 병합 권한을 분리

Decision 01 · Source of Truth

로컬 완료 표시 대신 GitHub 현재 상태를 다시 읽습니다.

Alternative

로컬 저장 상태만 믿으면 빠르지만, 다른 기기·workflow·수동 변경 뒤 PR 상태가 어긋날 수 있습니다.

Mechanism

쓰기 직전 live PR을 다시 조회하고 관리 marker·branch·head를 확인합니다. pullSnapshots는 표시용이며 권한 판단에 쓰지 않습니다.

Measurement

Extension 고정 커밋에서 11개 test file·69개 test, typecheck, production build를 fresh checkout으로 통과시켰습니다.

Cost & Proof

API round trip과 rate limit 의존을 지불합니다. 구현과 테스트는 고정 커밋에서 직접 확인할 수 있습니다.

Pinned extension source ↗

Decision 02 · Authentication Boundary

수동 PAT 입력 대신 GitHub Device Flow를 선택했습니다.

Alternative

PAT 붙여넣기는 구현이 단순하지만 사용자가 토큰 생성·복사·권한 선택을 직접 관리해야 합니다.

Mechanism

Device Flow 완료 뒤 GitHub identity와 public_repo scope를 검증하고, trusted extension context에서만 token을 사용합니다.

Failure Path

권한 부족·identity 불일치는 연결 완료로 처리하지 않고 재인증 경로를 보여줍니다.

Cost & Limit

public_repo는 넓은 권한이고 token은 chrome.storage.local에 남습니다. 편의와 맞바꾼 명시적 보안 비용입니다.

Auth source ↗

Decision 03 · Recovery

재시도 가능한 실패와 사용자 조치가 필요한 실패를 나눴습니다.

TransientRetry-After 우선

GitHub가 지시한 대기 시간을 따르고, 없으면 15초부터 지수 증가해 15분에서 상한을 둡니다.

Blocked자동 재시도 중단

401·403·404·422는 인증·권한·대상·검증 문제로 분류해 무한 retry queue를 만들지 않습니다.

Conflictforce push 금지

non-fast-forward는 최신 head를 다시 읽어 최대 3회 재시도하고, 사용자 branch를 강제 덮어쓰지 않습니다.

Offlinepending queue 보존

동기화 전 코드는 로컬 queue에 남기고, 성공 history에는 민감한 source code를 제거합니다.

상한 이후 실패는 자동 해결로 가장하지 않고 사용자가 원인을 확인할 수 있는 상태로 남깁니다.

Decision 04 · AI Merge Gate

AI 결과가 없거나 오래되면 병합을 닫습니다.

Alternative

AI 제공자 장애 때 fail-open하면 delivery는 빠르지만 검토되지 않은 head도 통과할 수 있습니다.

Mechanism

sweeper는 현재 workflow run·attempt·head SHA에 귀속된 trusted gate만 인정하고, 병합 직전 상태를 다시 읽어 stale 성공을 거부합니다.

Fallback

DeepSeek usage limit을 감지하면 해당 run의 추가 호출을 멈추고, 일반 문제는 MiMo, 어려운 문제 또는 강제 재검토는 Qwen으로 라우팅합니다.

Cost & Scope

fail-closed는 provider 장애 때 병합을 지연시킵니다. 테스트는 gate 상태 전이를 확인하지만 AI review의 정확도·latency·비용 절감을 증명하지 않습니다.

Pinned review workflow ↗
남은 설계 부채리뷰 cache key는 source content hash와 model을 포함하지만 명시적인 prompt·policy version은 포함하지 않습니다. 정책만 바뀐 경우 forced rereview가 필요합니다.

Reproduction

고정 커밋에서 수치와 한계를 함께 재현했습니다.

Dashboard 6e28c74 · Extension a189b02 · verified 2026-09-01

Dashboard checkout

typecheck, 51개 test file·778개 test, 17명·665개 submission record를 사용한 518개 정적 page build가 통과했습니다.

Extension checkout

11개 test file·69개 test, typecheck, extension build가 통과했습니다.

Pinned, not live

17·665는 해당 commit의 생성 snapshot입니다. 현재 대시보드는 계속 변하므로 live 성과 수치로 해석하지 않습니다.

Capability boundary

이 프로젝트는 AI-assisted delivery 자동화입니다. production conversational-AI backend 경험의 대체 근거로 사용하지 않습니다.

Public Actions Snapshot · Fixed Cutoff

운영 흔적도 cutoff와 산식을 고정했습니다.

Window

Dashboard SHA 6e28c742026-08-31T05:47:03Z cutoff로 공개 GitHub API 행 55개를 보존했습니다. 그중 pipeline workflow는 36개입니다.

Observed

성공한 Sweep Submission PRs 16개의 run lifecycle은 중앙값 37초, nearest-rank p95 59초였습니다.

Interpretation Limit

이 시간은 end-to-end 사용자 지연이나 merge-gate 지연이 아닙니다. success·skipped·cancelled만으로 AI review 실행, 차단 원인, fallback·cache hit, 사용자 가치를 추론하지 않습니다.