docs(hub): FE-OC-027~032 계약과 FE-GATE-027~033 gate 인덱스 추가
6개 능력 도메인 계약을 §2.1 과 §2.1.1 양쪽에 등록하고, registry 개수(8→9)와 runbook 종수(5→7) 변경을 FE-OC-022·FE-OC-025 summary 에 반영. §21 미러 표의 같은 두 문장도 함께 갱신했다.
This commit is contained in:
@@ -203,11 +203,17 @@ Out of scope:
|
||||
| `FE-OC-019` | `feature-frontend-browser-security-boundary-contract` | browser bundle에 secret을 넣지 않고 untrusted HTML injection을 기본 금지 | scan + lint tests | `planned` |
|
||||
| `FE-OC-020` | `feature-frontend-test-taxonomy-contract` | gate 종류별 책임·fixture·artifact를 분리하고 실패를 warning으로 낮추면 안 됨 | CI workflow | `planned` |
|
||||
| `FE-OC-021` | `feature-web-vitals-performance-budget-contract` | NFR은 device/network/cache/build context와 함께 MUST 측정 | machine-readable report | `planned` |
|
||||
| `FE-OC-022` | `feature-frontend-contract-registry-governance` | 8개 registry는 single primary owner와 compatibility impact를 MUST 기록 | registry diff check | `planned` |
|
||||
| `FE-OC-022` | `feature-frontend-contract-registry-governance` | 9개 registry는 single primary owner와 compatibility impact를 MUST 기록 | registry diff check | `planned` |
|
||||
| `FE-OC-023` | `feature-frontend-contract-compatibility-governance` | API/config/storage/release schema의 breaking change는 migration 또는 version bump 없이 배포하면 안 됨 | compatibility report | `planned` |
|
||||
| `FE-OC-024` | `feature-sample-feature-slice-contract-fixture` | sample은 contract fixture이며 production feature가 의존하면 안 됨 | sample removal smoke | `planned` |
|
||||
| `FE-OC-025` | `feature-frontend-operational-runbook-contract` | boot, chunk mismatch, API degradation, telemetry failure, rollback runbook을 MUST 유지 | drill records | `planned` |
|
||||
| `FE-OC-025` | `feature-frontend-operational-runbook-contract` | boot, chunk mismatch, API degradation, telemetry failure, rollback, realtime 연결, background 실행 runbook을 MUST 유지 | drill records | `planned` |
|
||||
| `FE-OC-026` | project hub (this file) | 외부 답변은 evidence grade를 MUST 보존하고 목표 수치를 측정 결과처럼 말하면 안 됨 | answer boundary checklist | `documented-only` |
|
||||
| `FE-OC-027` | `feature-frontend-binary-file-io-store-contract` | 파일 선택·다운로드·로컬 바이너리 저장은 등록된 port를 MUST 경유하고, 원시 `File`/`Blob` handle과 object URL 수명은 adapter 경계를 MUST NOT 벗어남 | binary I-O fixtures | `planned` |
|
||||
| `FE-OC-028` | `feature-frontend-cache-tier-cross-tab-invalidation-contract` | 캐시 계층과 탭 간 무효화는 `QueryCachePort` 정책과 registry를 MUST 경유하고, release·config·API version이 불일치하는 영속 캐시를 MUST NOT 재사용 | cache tier + cross-tab tests | `planned` |
|
||||
| `FE-OC-029` | `feature-frontend-large-object-transfer-contract` | 대용량 전송은 presigned 획득과 byte 전송의 credential 경계를 MUST 분리하고, 재개 가능 전송의 part 상태·무결성·취소를 MUST 소유 | transfer fixtures | `planned` |
|
||||
| `FE-OC-030` | `feature-frontend-multi-protocol-api-transport-contract` | 모든 protocol adapter는 동일한 application output port를 구현하고 protocol별 성공/실패를 정규화된 failure로 MUST 매핑하며, transport status만으로 성공을 판정하면 안 됨 | protocol mapping tests | `planned` |
|
||||
| `FE-OC-031` | `feature-frontend-realtime-subscription-lifecycle-contract` | 실시간 구독은 연결·재연결·재개·이벤트 검증·해제를 MUST 계약하고, 스키마 미검증 이벤트를 application으로 MUST NOT 전달하며 unmount 후 열린 구독을 MUST NOT 남김 | realtime lifecycle tests | `planned` |
|
||||
| `FE-OC-032` | `feature-frontend-background-execution-worker-contract` | 백그라운드 실행은 명시 owner·update UX·idempotency 조건을 MUST 갖추고, precaching으로 release coherence를 MUST NOT 훼손 | background execution tests | `planned` |
|
||||
|
||||
<!-- section-id: contract-gate-registry -->
|
||||
### 2.1.1 Contract Registry (typed)
|
||||
@@ -243,11 +249,17 @@ Out of scope:
|
||||
| `FE-OC-019` | `fe.browser-security-boundary` | 1 | operational-contract | `feature-frontend-browser-security-boundary-contract` | bundle·HTML·env 에 값을 넣을 때 | browser bundle에 secret을 넣지 않고 untrusted HTML injection을 기본 금지 | scan + lint tests | active |
|
||||
| `FE-OC-020` | `fe.test-taxonomy` | 1 | operational-contract | `feature-frontend-test-taxonomy-contract` | gate 나 fixture 를 추가·변경할 때 | gate 종류별 책임·fixture·artifact를 분리하고 실패를 warning으로 낮추면 안 됨 | CI workflow | active |
|
||||
| `FE-OC-021` | `fe.web-vitals-performance-budget` | 1 | operational-contract | `feature-web-vitals-performance-budget-contract` | NFR 을 측정하거나 보고할 때 | NFR은 device/network/cache/build context와 함께 MUST 측정 | machine-readable report | active |
|
||||
| `FE-OC-022` | `fe.contract-registry` | 1 | operational-contract | `feature-frontend-contract-registry-governance` | 8개 registry 중 하나를 변경할 때 | 8개 registry는 single primary owner와 compatibility impact를 MUST 기록 | registry diff check | active |
|
||||
| `FE-OC-022` | `fe.contract-registry` | 1 | operational-contract | `feature-frontend-contract-registry-governance` | 9개 registry 중 하나를 변경할 때 | 9개 registry는 single primary owner와 compatibility impact를 MUST 기록 | registry diff check | active |
|
||||
| `FE-OC-023` | `fe.contract-compatibility` | 1 | operational-contract | `feature-frontend-contract-compatibility-governance` | API·config·storage·release schema 를 변경할 때 | API/config/storage/release schema의 breaking change는 migration 또는 version bump 없이 배포하면 안 됨 | compatibility report | active |
|
||||
| `FE-OC-024` | `fe.sample-feature-slice-contract` | 1 | operational-contract | `feature-sample-feature-slice-contract-fixture` | sample slice 를 만들거나 제거할 때 | sample은 contract fixture이며 production feature가 의존하면 안 됨 | sample removal smoke | active |
|
||||
| `FE-OC-025` | `fe.operational-runbook` | 1 | operational-contract | `feature-frontend-operational-runbook-contract` | 운영 장애가 발생하거나 drill 을 돌릴 때 | boot, chunk mismatch, API degradation, telemetry failure, rollback runbook을 MUST 유지 | drill records | active |
|
||||
| `FE-OC-025` | `fe.operational-runbook` | 1 | operational-contract | `feature-frontend-operational-runbook-contract` | 운영 장애가 발생하거나 drill 을 돌릴 때 | boot, chunk mismatch, API degradation, telemetry failure, rollback, realtime 연결, background 실행 runbook을 MUST 유지 | drill records | active |
|
||||
| `FE-OC-026` | `fe.answer-boundary` | 1 | operational-contract | `ca-skeleton-frontend-operational-contract` | 외부 공개 답변을 작성할 때 | 외부 답변은 evidence grade를 MUST 보존하고 목표 수치를 측정 결과처럼 말하면 안 됨 | answer boundary checklist | active |
|
||||
| `FE-OC-027` | `fe.binary-file-io-store` | 1 | operational-contract | `feature-frontend-binary-file-io-store-contract` | 파일을 고르거나 내려받거나 바이너리를 로컬에 쓸 때 | 파일 선택·다운로드·로컬 바이너리 저장은 등록된 port를 MUST 경유하고, 원시 `File`/`Blob` handle과 object URL 수명은 adapter 경계를 MUST NOT 벗어남 | binary I-O fixtures | active |
|
||||
| `FE-OC-028` | `fe.cache-tier-cross-tab` | 1 | operational-contract | `feature-frontend-cache-tier-cross-tab-invalidation-contract` | 캐시를 영속화하거나 다른 탭에 무효화를 전파할 때 | 캐시 계층과 탭 간 무효화는 `QueryCachePort` 정책과 registry를 MUST 경유하고, release·config·API version이 불일치하는 영속 캐시를 MUST NOT 재사용 | cache tier + cross-tab tests | active |
|
||||
| `FE-OC-029` | `fe.large-object-transfer` | 1 | operational-contract | `feature-frontend-large-object-transfer-contract` | 대용량 객체를 올리거나 스트리밍으로 내려받을 때 | 대용량 전송은 presigned 획득과 byte 전송의 credential 경계를 MUST 분리하고, 재개 가능 전송의 part 상태·무결성·취소를 MUST 소유 | transfer fixtures | active |
|
||||
| `FE-OC-030` | `fe.multi-protocol-transport` | 1 | operational-contract | `feature-frontend-multi-protocol-api-transport-contract` | REST 이외 protocol 로 operation 을 호출할 때 | 모든 protocol adapter는 동일한 application output port를 구현하고 protocol별 성공/실패를 정규화된 failure로 MUST 매핑하며, transport status만으로 성공을 판정하면 안 됨 | protocol mapping tests | active |
|
||||
| `FE-OC-031` | `fe.realtime-subscription-lifecycle` | 1 | operational-contract | `feature-frontend-realtime-subscription-lifecycle-contract` | 스트림을 구독하거나 해제할 때 | 실시간 구독은 연결·재연결·재개·이벤트 검증·해제를 MUST 계약하고, 스키마 미검증 이벤트를 application으로 MUST NOT 전달하며 unmount 후 열린 구독을 MUST NOT 남김 | realtime lifecycle tests | active |
|
||||
| `FE-OC-032` | `fe.background-execution` | 1 | operational-contract | `feature-frontend-background-execution-worker-contract` | worker·service worker·background sync 를 등록하거나 갱신할 때 | 백그라운드 실행은 명시 owner·update UX·idempotency 조건을 MUST 갖추고, precaching으로 release coherence를 MUST NOT 훼손 | background execution tests | active |
|
||||
| `FE-GATE-001` | `fe.gate.manifest-lockfile` | 1 | gate | `feature-frontend-project-bootstrap-toolchain-contract` | 의존성을 설치하거나 lockfile 을 변경할 때 | lockfile 이 manifest 와 어긋나면 merge·release 를 MUST 차단 | install log | active |
|
||||
| `FE-GATE-002` | `fe.gate.lint` | 1 | gate | `feature-frontend-architecture-enforcement-lint-contract` | 소스를 수정해 merge 를 요청할 때 | 금지된 API·import 가 남아 있으면 merge 를 MUST 차단 | lint report | active |
|
||||
| `FE-GATE-003` | `fe.gate.typecheck` | 1 | gate | `feature-frontend-project-bootstrap-toolchain-contract` | 타입 주석이나 checkJs 설정을 변경할 때 | production diagnostic 이 남아 있으면 merge 를 MUST 차단 | check-types report | active |
|
||||
@@ -274,6 +286,13 @@ Out of scope:
|
||||
| `FE-GATE-024` | `fe.gate.runbook-telemetry` | 1 | gate | `feature-frontend-operational-runbook-contract` | telemetry degradation drill 을 돌릴 때 | `FE-RB-004` 의 containment·escalation·recovery 단언이 실패하면 production promotion 을 MUST 차단 | `FE-RB-004` record | active |
|
||||
| `FE-GATE-025` | `fe.gate.runbook-release-rollback` | 1 | gate | `feature-frontend-operational-runbook-contract` | release 차단 결함으로 rollback 을 판단할 때 | `FE-RB-005` 의 rollback 결정·escalation·recovery 단언이 실패하면 production promotion 을 MUST 차단 | `FE-RB-005` record | active |
|
||||
| `FE-GATE-026` | `fe.gate.lab-performance` | 1 | gate | `feature-web-vitals-performance-budget-contract` | lab 성능을 측정해 보고할 때 | lab threshold 미달이거나 재현 메타데이터가 없으면 release 를 MUST 차단 | lab performance report | active |
|
||||
| `FE-GATE-027` | `fe.gate.binary-file-io` | 1 | gate | `feature-frontend-binary-file-io-store-contract` | 파일 I-O 또는 로컬 바이너리 저장 코드를 변경할 때 | picker·다운로드·quota·object URL 해제 fixture 가 실패하면 merge 를 MUST 차단 | binary I-O report | active |
|
||||
| `FE-GATE-028` | `fe.gate.cache-tier-cross-tab` | 1 | gate | `feature-frontend-cache-tier-cross-tab-invalidation-contract` | 캐시 영속화나 탭 간 전파를 변경할 때 | version 파티션·탭 간 무효화 fixture 가 실패하면 merge 를 MUST 차단 | cache tier report | active |
|
||||
| `FE-GATE-029` | `fe.gate.large-object-transfer` | 1 | gate | `feature-frontend-large-object-transfer-contract` | 대용량 전송 경로를 변경할 때 | presign 만료·part 재시도·무결성·credential 경계 fixture 가 실패하면 merge·release 를 MUST 차단 | transfer report | active |
|
||||
| `FE-GATE-030` | `fe.gate.multi-protocol-transport` | 1 | gate | `feature-frontend-multi-protocol-api-transport-contract` | protocol adapter 나 codec 을 변경할 때 | protocol 별 성공/실패 정규화 fixture 가 실패하면 merge 를 MUST 차단 | protocol mapping report | active |
|
||||
| `FE-GATE-031` | `fe.gate.realtime-lifecycle` | 1 | gate | `feature-frontend-realtime-subscription-lifecycle-contract` | 실시간 연결·구독 코드를 변경할 때 | backoff·resume·구독 해제·이벤트 검증 fixture 가 실패하면 merge·release 를 MUST 차단 | realtime lifecycle report | active |
|
||||
| `FE-GATE-032` | `fe.gate.background-execution` | 1 | gate | `feature-frontend-background-execution-worker-contract` | worker·service worker·background sync 를 변경할 때 | SW update UX·sync idempotency·worker timeout fixture 가 실패하면 merge·release 를 MUST 차단 | background execution report | active |
|
||||
| `FE-GATE-033` | `fe.gate.capability-default-off` | 1 | gate | `feature-frontend-env-runtime-config-contract` | capability flag 나 adapter 등록을 변경할 때 | 기본 config build 에 비활성 capability 의 adapter 가 포함되면 merge·release 를 MUST 차단 | capability bundle report | active |
|
||||
|
||||
<!-- section-id: artifact-registry -->
|
||||
### 2.1.3 Artifact Registry (typed)
|
||||
@@ -2130,10 +2149,10 @@ Branch completion MUST update this table, Cluster, evidence ledger, and readines
|
||||
| `FE-OC-019@1` | [[raw/branch-notes/feature-frontend-browser-security-boundary-contract]] | browser bundle에 secret을 넣지 않고 untrusted HTML injection을 기본 금지 | import 참조로 적용 |
|
||||
| `FE-OC-020@1` | [[raw/branch-notes/feature-frontend-test-taxonomy-contract]] | gate 종류별 책임·fixture·artifact를 분리하고 실패를 warning으로 낮추면 안 됨 | import 참조로 적용 |
|
||||
| `FE-OC-021@1` | [[raw/branch-notes/feature-web-vitals-performance-budget-contract]] | NFR은 device/network/cache/build context와 함께 MUST 측정 | import 참조로 적용 |
|
||||
| `FE-OC-022@1` | [[raw/branch-notes/feature-frontend-contract-registry-governance]] | 8개 registry는 single primary owner와 compatibility impact를 MUST 기록 | import 참조로 적용 |
|
||||
| `FE-OC-022@1` | [[raw/branch-notes/feature-frontend-contract-registry-governance]] | 9개 registry는 single primary owner와 compatibility impact를 MUST 기록 | import 참조로 적용 |
|
||||
| `FE-OC-023@1` | [[raw/branch-notes/feature-frontend-contract-compatibility-governance]] | API/config/storage/release schema의 breaking change는 migration 또는 version bump 없이 배포하면 안 됨 | import 참조로 적용 |
|
||||
| `FE-OC-024@1` | [[raw/branch-notes/feature-sample-feature-slice-contract-fixture]] | sample은 contract fixture이며 production feature가 의존하면 안 됨 | import 참조로 적용 |
|
||||
| `FE-OC-025@1` | [[raw/branch-notes/feature-frontend-operational-runbook-contract]] | boot, chunk mismatch, API degradation, telemetry failure, rollback runbook을 MUST 유지 | import 참조로 적용 |
|
||||
| `FE-OC-025@1` | [[raw/branch-notes/feature-frontend-operational-runbook-contract]] | boot, chunk mismatch, API degradation, telemetry failure, rollback, realtime 연결, background 실행 runbook을 MUST 유지 | import 참조로 적용 |
|
||||
<!-- GENERATED: project-contract-imports:end -->
|
||||
|
||||
<!-- GENERATED: sources:start -->
|
||||
|
||||
Reference in New Issue
Block a user