fix(hub): BARE_DECISION_REF 2건 해소

복구된 wiki_consistency_check.py 가 잡은 건. `\bD(\d+)\b` 가 `FE-D034`
안의 D034 를 decision ref 로 읽고, owner 슬러그 뒤 100자 창에 들어와
bare 참조로 판정됐다. D-토큰을 슬러그 앞 열(Decision/Status)로 옮겨
정보 손실 없이 해소했다. --all findings 4 -> 2 (남은 2건은 keycloak
노트의 기존 건으로 이번 범위 밖).
This commit is contained in:
DongHyeonka
2026-07-28 15:12:32 +09:00
parent 7c4e8df248
commit 55de4f55b0
@@ -421,7 +421,7 @@ Out of scope:
| `FE-D016` | mutation 자동 retry는 stable idempotency key와 backend replay contract가 있을 때만 허용 | `accepted-documented-only` | `feature-api-client-response-envelope-contract` | `FE-OC-009`, `FE-OC-023` | duplicate write 방지 invariant | mutation이 naturally idempotent임이 schema로 증명 | — |
| `FE-D017` | auth lifecycle은 외부 owner, skeleton은 `AuthSessionPort`만 소비 | `accepted-documented-only` | `feature-frontend-auth-session-integration-contract` | `FE-OC-010` | [[raw/project-notes/keycloak-patterns-overview]] | skeleton이 독립 auth product로 scope 변경 | — |
| `FE-D018` | route/API-operation/env/storage/error/query/telemetry/release/capability token은 9개 registry로 관리 | `accepted-documented-only` | `feature-frontend-contract-registry-governance` | `FE-OC-013`, `FE-OC-022` | rename·compatibility 영향 추적 | code generation SSOT 채택 | — |
| `FE-D019` | service worker와 offline asset cache는 default off | `superseded` | `feature-frontend-release-cache-rollback-contract` | `FE-OC-016`, `FE-OC-017`, `FE-OC-023` | stale asset·config mismatch surface 축소 | `FE-D034`가 2026-07-28에 대체 — SW 역할을 precaching과 push/sync 호스트로 분리 | — |
| `FE-D019` | service worker와 offline asset cache는 default off — 2026-07-28에 `FE-D034`로 대체 | `superseded` | `feature-frontend-release-cache-rollback-contract` | `FE-OC-016`, `FE-OC-017`, `FE-OC-023` | stale asset·config mismatch surface 축소 | 후속 결정이 SW 역할을 precaching과 push·sync 호스트로 분리 (§6.1 개정 기록 2026-07-28) | — |
| `FE-D020` | hashed asset은 immutable, HTML·runtime config·release manifest는 revalidate/no-store 정책 분리 | `accepted-documented-only` | `feature-frontend-release-cache-rollback-contract` | `FE-OC-016`, `FE-OC-017` | release coherence invariant | hosting cache primitive 제약 | — |
| `FE-D021` | telemetry는 best-effort queue + redaction, sink failure는 UI를 실패시키지 않음 | `accepted-documented-only` | `feature-frontend-observability-logging-trace-contract` | `FE-OC-014` | operational isolation | regulated audit event처럼 delivery guarantee가 필요한 별도 channel 도입 | — |
| `FE-D022` | test stack default는 Vitest + RTL + MSW + Playwright + axe | `conditional-default` | `feature-frontend-test-taxonomy-contract` | `FE-OC-020` | Vite/browser/component/e2e responsibility 분리 | organization test platform이 대체 | — |
@@ -437,7 +437,7 @@ Out of scope:
| `FE-D032` | 실시간 transport는 SSE를 우선하고 양방향이 필요하면 WebSocket, 둘 다 불가할 때만 최소 간격·backoff·visibility gating을 갖춘 bounded polling을 쓴다 | `conditional-default` | `feature-frontend-realtime-subscription-lifecycle-contract` | `FE-OC-031` | project-local default, 외부 source claim 아님; polling은 마지막 수단 | backend가 SSE를 제공하지 않거나 양방향이 기본 요구가 됨 | — |
| `FE-D033` | 실시간 연결은 full jitter backoff와 30초 cap을 쓰고 재시도 상한 후 terminal 상태로 전이하며 resume은 `Last-Event-ID` 또는 cursor로 수행하고 unmount 시 구독을 해제한다 | `conditional-default` | `feature-frontend-realtime-subscription-lifecycle-contract` | `FE-OC-011`, `FE-OC-031` | 재연결 폭주·구독 누수 억제, project decision | backend가 서버 주도 재연결 정책을 계약으로 제공 | — |
| `FE-D034` | service worker는 역할을 분리해 release asset precaching은 default off로 유지하고 push·background sync·Cache Storage 호스트 역할만 capability opt-in으로 허용하며 update UX 계약을 요구한다 | `conditional-default` | `feature-frontend-background-execution-worker-contract` | `FE-OC-016`, `FE-OC-017`, `FE-OC-023`, `FE-OC-032` | precaching은 release coherence 훼손 원인이나 push·sync는 SW 없이는 불가; project decision | offline-first가 제품 요구가 되고 update UX가 설계됨 | `FE-D019` |
| `FE-D035` | background sync 재생은 `idempotency: keyed` operation만 허용한다 | `accepted-documented-only` | `feature-frontend-background-execution-worker-contract` | `FE-OC-009`, `FE-OC-032` | `FE-D016`의 중복 write 방지 invariant를 지연 재생에 확장 | mutation이 naturally idempotent임이 schema로 증명됨 | — |
| `FE-D035` | background sync 재생은 `idempotency: keyed` operation만 허용한다 (`FE-D016` 상속) | `accepted-documented-only` | `feature-frontend-background-execution-worker-contract` | `FE-OC-009`, `FE-OC-032` | mutation 자동 retry 결정의 중복 write 방지 invariant를 지연 재생에 확장 | mutation이 naturally idempotent임이 schema로 증명됨 | — |
| `FE-D036` | Web Worker 작업은 structured-clone 또는 Transferable로만 통신하고 timeout과 terminate를 계약하며 worker 안에서 application port를 재구현하지 않는다 | `accepted-documented-only` | `feature-frontend-background-execution-worker-contract` | `FE-OC-002`, `FE-OC-032` | worker 안 로직 중복이 layer 경계를 우회하는 것을 차단, project decision | SharedArrayBuffer 기반 병렬 처리가 요구됨 | — |
`FE-D026`~`FE-D036``Evidence / rationale`에 적힌 `project-local default, 외부 source claim 아님``FE-D001`이 쓰는 표기와 같다. 대응 raw 근거 문서가 아직 없다는 사실을 감추지 않고 명시하는 장치이며, 수집 계획은 `FE-Q-011`이 소유한다.