feat: add optional frontend adapter recipes

This commit is contained in:
donghyeon-ka
2026-07-26 17:57:04 +09:00
parent 638f5f71bd
commit 6c73b845bd
29 changed files with 2291 additions and 45 deletions
@@ -1003,6 +1003,31 @@ RP-12는 recipe별 merge commit이다. optional adapter 문제 시 해당 recipe
revert하고 RP-11을 유지한다. 여러 vendor를 되돌릴 수 없는 한 commit에 묶지
않는다.
**구현 증거 (2026-07-26)**
- VD-10에서 실제 project 요구가 선택되지 않았음을 기록하고 12개 capability를
모두 `RECIPE_AVAILABLE`, production runtime dependency 0개로 유지했다.
- machine-readable catalog에 recipe별 trigger/forbidden 조건, boundary,
port/fake, failure matrix, lifecycle cleanup, project owner 요구,
security/privacy, gzip budget, fallback, server-state 정책과 제거 순서를
등록했다.
- production-excluded `recipes/frontend-capabilities`에 12개 vendor-neutral
TypeScript port와 deterministic fake, fail-closed unavailable adapter를
제공한다. 프로젝트는 선택한 최소 계약만 application/presentation 경계로
복사하고 concrete adapter를 composition에서 연결한다.
- realtime ordering/unsubscribe, offline migration/close, worker cancel,
multi-tab dedupe, permission result, workflow reset, large-data stale
generation, analytics consent/redaction/queue와 나머지 facade contract를
runnable test로 검증한다.
- cleanup 누락, 승인되지 않은 dependency, vendor direct import, credential
storage/URL/telemetry 경로, server-state store 복제와 production recipe import
negative fixture를 blocking gate에 연결했다.
- recipe와 recipe test를 통째로 제거한 임시 사본에서 base typecheck,
architecture, 전체 test와 production build를 실행하며, opt-in하지 않은
sentinel이 built `dist`에 없는지 검사한다.
- 상세 도입/배치/검증/제거 절차는
`docs/architecture/optional-adapter-recipes.md`에 기록했다.
## 11. Vendor decision gate
| ID | 시점 | 결정 | 기본값 또는 미결정 시 처리 | 차단 범위 |