feat: 기능 추가 과정중

This commit is contained in:
donghyeon-ka
2026-07-30 15:58:20 +09:00
parent d3ef801fe6
commit 6c52cdb916
648 changed files with 126325 additions and 6680 deletions
@@ -48,8 +48,15 @@ fallback, fake와 제거 기준을 다시 설계해야 한다. 따라서 product
접속하는 recipe도 금지한다.
8. lifecycle이 있는 capability는 unsubscribe, close, unregister, dispose,
cancel 또는 `AbortSignal`을 계약과 contract test에 포함해야 한다.
9. 선택하지 않은 recipe sentinel이나 vendor dependency가 production bundle에
들어가면 gate를 실패시킨다.
9. 선택하지 않은 recipe sentinel이나 reference runtime source, vendor
dependency가 production bundle에 들어가면 gate를 실패시킨다.
`referenceRuntime`이 있는 recipe는 catalog `sourceRoots` 전체를 별도의
production-mode synthetic entry로 deterministic하게 bundle/minify하되
tree-shaking을 끄고, 모든 출력의 gzip 합계가 recipe budget을 넘으면
production composition 여부와 무관하게 실패시킨다. 2026-07-28 최초 실측에서
`offline-indexeddb`가 32,930 bytes였으므로 측정 없이 선언됐던 8,000 bytes를
약 9% headroom의 36,000 bytes로 교정했으며 다른 budget은 자동 인상하지
않는다.
10. recipe 전체를 제거한 임시 worktree에서 base typecheck, architecture,
unit/component/integration test와 production build가 통과해야 한다.
@@ -77,13 +84,20 @@ behavior를 fake만으로 확인하고 `INSTALLED`로 바꾸지 않는다.
- catalog: `config/recipes/frontend-capability-recipes.json`
- contracts/fakes: `recipes/frontend-capabilities`
- 상세 runbook: `docs/architecture/optional-adapter-recipes.md`
- file/IndexedDB/OPFS/Cache 심층 결정:
`docs/architecture/decisions/VD-11-browser-file-and-origin-storage.md`
- browser data 상세 설계:
`docs/architecture/browser-file-and-origin-storage.md`
- realtime/Web Push/Polling 심층 설계와 결정:
`docs/architecture/realtime-events-web-push-and-bounded-polling.md`,
`docs/architecture/decisions/VD-28-realtime-events-web-push-and-bounded-polling.md`
- contract test: `tests/recipes/optional-capability-contracts.test.ts`
- negative fixture:
`tests/fixtures/optional-recipes/forbidden`
- validation:
`scripts/check-optional-recipes.mjs`
`scripts/check-optional-recipes.ts`
- removal:
`scripts/test-optional-recipe-removal.mjs`
`scripts/test-optional-recipe-removal.ts`
- evidence:
`artifacts/quality/optional-recipes.json`,
`artifacts/quality/optional-recipe-fixtures.json`,