From 422545f7d8e099c603eae90f56a26d4aaf0558f6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 22:03:43 +0900 Subject: [PATCH 001/115] docs: reconcile product gap baseline --- .../product-technical-gap-baseline.md | 13 ++ docs/product-technical-gap-baseline.md | 147 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 docs/doctoring/product-technical-gap-baseline.md create mode 100644 docs/product-technical-gap-baseline.md diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md new file mode 100644 index 00000000..113a063c --- /dev/null +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -0,0 +1,13 @@ +# Product/technical gap baseline doctoring record + +## 2026-08-28 + +- Reconciled the baseline to protected `develop@2c328875e00e86537df3e965170be80532571cad`. +- Distinguished shipped behavior from open PR submissions so #621/#624 features are + not reported as already available on `develop`. +- Recorded the exact #624 squash merge into the #621 feature branch and the subsequent + #621 exact head `5e9ba508031f4899f1505c08fa5810abe69dc2dd`. +- Recorded #610 OpenCode/Strix gate failures as non-authorizing external evidence, + including the missing current-head verdict and provider HTTP 500 report absence. +- Research mapping remains anchored to ISO 21502, ISO 21511, ISO 21508, WCAG 2.2, + NIST SSDF 1.1, and the preserved PM-analysis sources listed in the baseline. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md new file mode 100644 index 00000000..e7b37858 --- /dev/null +++ b/docs/product-technical-gap-baseline.md @@ -0,0 +1,147 @@ +# ScopeWeave 제품·기술 Gap Baseline + +> 기준일: 2026-08-28 | 보호 기준 브랜치: `develop` | 보호 기준 HEAD: `2c328875e00e86537df3e965170be80532571cad` + +이 문서는 저장소의 PRD 역할을 하는 설계 문서와 README, 기술 계약, +구현·테스트·운영 게이트를 현재 파일과 실행 증거에 연결하는 기준선이다. +별도 `PRD.md`는 없으며, 제품 요구의 원문은 +[`docs/plans/2026-04-20-scopeweave-design.md`](plans/2026-04-20-scopeweave-design.md)와 +[`README.md`](../README.md)이다. 아래의 “완료”는 보호된 `develop`에 실제로 +존재하는 것만 뜻한다. 열린 PR의 구현은 별도 제출 상태로 기록한다. + +## 1. 제품 목표와 구매자 + +주 구매자는 일정·공정 데이터를 WBS로 관리하고 계획 대비 실적과 지연 +원인을 설명해야 하는 PM과 PMO다. 제품의 핵심 가치는 다음과 같다. + +1. `단계 > Activity > Task` 구조를 빠르게 편집한다. +2. 날짜·진척·선행작업에서 일정 통제 신호를 재현 가능하게 계산한다. +3. CSV와 브라우저 저장으로 별도 플랫폼에서도 계획을 회수한다. + +현재 제품은 정적 브라우저 클라이언트와 선택적 Node SaaS 계층으로 나뉜다. +정적 호스팅에서 서버 파일을 덮어쓰지 않는 제약은 유지한다. + +## 2. PRD/TRD 추적성 + +| 요구 | 보호된 `develop` 구현 증거 | 상태 | +| --- | --- | --- | +| 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | +| 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `5e9ba50` 제출본에 구현됨 | 제출됨, 병합 대기 | +| CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | +| JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `5e9ba50` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624가 #621에 병합되어 제출됨 | 제출됨, 병합 대기 | +| 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html` | 구현 완료, 실제 출판 증거 필요 | +| Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | + +## 3. UML 및 데이터 흐름 + +```mermaid +classDiagram + class ScopeWeaveState { + +string projectName + +string baseDate + +Task[] tasks + +string taskQuery + } + class Task { + +string id + +string parentId + +number depth + +string phase + +string activity + +string task + +string plannedStartDate + +string plannedEndDate + } + class AppController { + +bootstrap() + +renderAll() + +persistState() + } + class AnalyticsBridge { + +render(input) + +computeCpm(tasks) + +computeEvm(input) + } + class BrowserStorage { + +load() + +save(state) + } + ScopeWeaveState "1" *-- "0..*" Task + AppController --> ScopeWeaveState + AppController --> AnalyticsBridge + AppController --> BrowserStorage +``` + +`tasks`가 유일한 원천이며 사용자 입력·파일 seed·Cloud snapshot은 이 상태로 +정규화된다. 화면 갱신은 `renderAll()` 하나를 통과하고 분석은 +`window.ScopeWeaveAnalytics` 경계를 통해 호출된다. + +## 4. 현재 PR 및 Gap 조치 상태 + +이 표는 2026-08-28의 GitHub exact-head snapshot이다. Checks와 리뷰는 +HEAD가 바뀌면 다시 확인해야 한다. + +| ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | +| --- | --- | --- | --- | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `5e9ba50`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5e9ba50`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | +| G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #610/#601 Strix 실패; #610 OpenCode current verdict 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | + +### Exact-head queue evidence + +- #621: `develop@2c328875` 대상 + `5e9ba508031f4899f1505c08fa5810abe69dc2dd`. #624 merge commit 뒤에 seed + exploration 비영속성 테스트 커밋이 추가되었으며, 이 exact HEAD 기준 Checks를 + 다시 확인해야 한다. +- #610: `40f26217609dd5836a91ab535c01ead266143078`. 일반 보안·테스트·cloud + E2E는 통과했지만 OpenCode는 해당 HEAD verdict 부재로 실패했고, Strix는 + provider HTTP 500과 구조화 vulnerability report 부재로 fail-closed 되었다. +- #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 + protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix + provider/backend 실패와 승인 부재로 병합하지 않았다. +- #624: `69eff955bc16295a6d82b72174b25d8ec94345c1`은 base + `feat/wbs-search-context`에 normal squash merge되어 merge commit + `5f8a3d7759aef628f4bcf06f3780c53737ca2a53`를 만들었다. + +## 5. 품질·보안 기준선 + +- 런타임 의존성은 브라우저 native API와 현재 서버의 최소 의존성만 사용한다. +- `app.js`는 `new Function` 테스트 계약 때문에 top-level ESM import/export를 + 사용하지 않는다. +- 입력은 신뢰 경계에서 길이·날짜·CSV 수식·JSON prototype pollution을 검증하고, + 동적 HTML 삽입 대신 `textContent`를 사용한다. +- 접근성은 레이블, landmark, keyboard focus, live status, disabled 상태, + reduced motion을 최소 기준으로 삼는다. +- 검증 명령은 `npm run test:unit`, `npm run test:api`, `npm run test:e2e`, + `python3 -m pytest tests/config`, `npm run fuzz`다. +- 현재 exact-head 제출본의 로컬 증거는 PR별로 분리하며, predecessor·synthetic + merge·pending·skipped·provider-failed evidence는 통과로 승격하지 않는다. + +## 6. 표준·연구 근거 (APA 7th) + +국제표준화기구. (2020). *ISO 21502:2020: Project, programme and portfolio +management—Guidance on project management*. https://www.iso.org/standard/74947.html + +국제표준화기구. (2018). *ISO 21511:2018: Work breakdown structures for +project and programme management*. https://www.iso.org/standard/69702.html + +국제표준화기구. (2026). *ISO 21508:2026: Project, programme and portfolio +management—Earned value management*. https://www.iso.org/standard/87899.html + +World Wide Web Consortium. (2024). *Web Content Accessibility Guidelines +(WCAG) 2.2*. https://www.w3.org/TR/WCAG22/ + +Souppaya, M., Scarfone, K., & Dodson, D. (2022). *Secure software development +framework (SSDF) version 1.1: Recommendations for mitigating the risk of +software vulnerabilities* (NIST Special Publication 800-218). National Institute +of Standards and Technology. https://doi.org/10.6028/NIST.SP.800-218 + +상세한 PM 분석 연구·표준 매핑은 +[`docs/research/pm-analysis/README.md`](research/pm-analysis/README.md), 설계 결정은 +[`docs/plans/2026-04-20-scopeweave-design.md`](plans/2026-04-20-scopeweave-design.md)에 +보존한다. From b44de3102bf2f6994c702652f7dbba873eb19402 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 22:22:33 +0900 Subject: [PATCH 002/115] docs: refresh exact-head gap evidence --- docs/doctoring/product-technical-gap-baseline.md | 3 ++- docs/product-technical-gap-baseline.md | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 113a063c..d30b068a 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -6,7 +6,8 @@ - Distinguished shipped behavior from open PR submissions so #621/#624 features are not reported as already available on `develop`. - Recorded the exact #624 squash merge into the #621 feature branch and the subsequent - #621 exact head `5e9ba508031f4899f1505c08fa5810abe69dc2dd`. + #621 exact head `6d0828841987c633a6428e65bd252bca07cbc496`, including the CSV search + reset and sample-onboarding persistence fixes. - Recorded #610 OpenCode/Strix gate failures as non-authorizing external evidence, including the missing current-head verdict and provider HTTP 500 report absence. - Research mapping remains anchored to ISO 21502, ISO 21511, ISO 21508, WCAG 2.2, diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e7b37858..ef5aa66c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,10 +27,10 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `5e9ba50` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `6d08288` 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `5e9ba50` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `6d08288` 제출본에 구현됨 | 제출됨, 병합 대기 | | 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624가 #621에 병합되어 제출됨 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html` | 구현 완료, 실제 출판 증거 필요 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -86,8 +86,8 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `5e9ba50`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5e9ba50`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `6d08288`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `6d08288`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | | G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #610/#601 Strix 실패; #610 OpenCode current verdict 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | @@ -95,9 +95,9 @@ HEAD가 바뀌면 다시 확인해야 한다. ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `5e9ba508031f4899f1505c08fa5810abe69dc2dd`. #624 merge commit 뒤에 seed - exploration 비영속성 테스트 커밋이 추가되었으며, 이 exact HEAD 기준 Checks를 - 다시 확인해야 한다. + `6d0828841987c633a6428e65bd252bca07cbc496`. CSV 성공 import 시 stale 검색어를 + 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않는 + 현재 제출본이다. - #610: `40f26217609dd5836a91ab535c01ead266143078`. 일반 보안·테스트·cloud E2E는 통과했지만 OpenCode는 해당 HEAD verdict 부재로 실패했고, Strix는 provider HTTP 500과 구조화 vulnerability report 부재로 fail-closed 되었다. From 307dc304423b7a4c0e1ec1f978178f8f25380f50 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 22:25:30 +0900 Subject: [PATCH 003/115] docs: correct squash merge terminology --- docs/product-technical-gap-baseline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ef5aa66c..def83d17 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -105,8 +105,8 @@ HEAD가 바뀌면 다시 확인해야 한다. protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. - #624: `69eff955bc16295a6d82b72174b25d8ec94345c1`은 base - `feat/wbs-search-context`에 normal squash merge되어 merge commit - `5f8a3d7759aef628f4bcf06f3780c53737ca2a53`를 만들었다. + `feat/wbs-search-context`에 normal squash merge되어 단일 squash commit + `5f8a3d7759aef628f4bcf06f3780c53737ca2a53`가 되었다. ## 5. 품질·보안 기준선 From f5f44b10d59b552cc602126c7e738d1acdafef39 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 22:43:25 +0900 Subject: [PATCH 004/115] docs: refresh search performance evidence --- docs/doctoring/product-technical-gap-baseline.md | 4 ++-- docs/product-technical-gap-baseline.md | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index d30b068a..2cdae924 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -6,8 +6,8 @@ - Distinguished shipped behavior from open PR submissions so #621/#624 features are not reported as already available on `develop`. - Recorded the exact #624 squash merge into the #621 feature branch and the subsequent - #621 exact head `6d0828841987c633a6428e65bd252bca07cbc496`, including the CSV search - reset and sample-onboarding persistence fixes. + #621 exact head `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`, including the CSV search + reset, sample-onboarding persistence fixes, and debounced search rerender. - Recorded #610 OpenCode/Strix gate failures as non-authorizing external evidence, including the missing current-head verdict and provider HTTP 500 report absence. - Research mapping remains anchored to ISO 21502, ISO 21511, ISO 21508, WCAG 2.2, diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index def83d17..acc70363 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,10 +27,10 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `6d08288` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `4c8d09d` 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `6d08288` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `4c8d09d` 제출본에 구현됨 | 제출됨, 병합 대기 | | 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624가 #621에 병합되어 제출됨 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html` | 구현 완료, 실제 출판 증거 필요 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -86,8 +86,8 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `6d08288`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `6d08288`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `4c8d09d`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | | G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #610/#601 Strix 실패; #610 OpenCode current verdict 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | @@ -95,9 +95,9 @@ HEAD가 바뀌면 다시 확인해야 한다. ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `6d0828841987c633a6428e65bd252bca07cbc496`. CSV 성공 import 시 stale 검색어를 - 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않는 - 현재 제출본이다. + `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`. CSV 성공 import 시 stale 검색어를 + 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, + 빠른 검색 입력의 전체 재렌더를 디바운스하는 현재 제출본이다. - #610: `40f26217609dd5836a91ab535c01ead266143078`. 일반 보안·테스트·cloud E2E는 통과했지만 OpenCode는 해당 HEAD verdict 부재로 실패했고, Strix는 provider HTTP 500과 구조화 vulnerability report 부재로 fail-closed 되었다. From 64f691490937503d6868d91727b1a2e2a89b5bd8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 22:59:02 +0900 Subject: [PATCH 005/115] docs: record current PR queue evidence --- docs/doctoring/product-technical-gap-baseline.md | 3 +++ docs/product-technical-gap-baseline.md | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 2cdae924..66bb6b7a 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -10,5 +10,8 @@ reset, sample-onboarding persistence fixes, and debounced search rerender. - Recorded #610 OpenCode/Strix gate failures as non-authorizing external evidence, including the missing current-head verdict and provider HTTP 500 report absence. +- Added exact-head evidence for #515, stacked draft #623, and draft security PR #552; + preserved their review/approval and provider-gate limits instead of treating green + local or partial hosted results as merge authority. - Research mapping remains anchored to ISO 21502, ISO 21511, ISO 21508, WCAG 2.2, NIST SSDF 1.1, and the preserved PM-analysis sources listed in the baseline. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index acc70363..17c1d960 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #610/#601 Strix 실패; #610 OpenCode current verdict 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current verdict 부재; #621/#552 Strix provider 실패; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -104,6 +104,15 @@ HEAD가 바뀌면 다시 확인해야 한다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. +- #515: `develop@2c328875` 대상 `36c11dd0bf907569184d7d73172b675d21bd0ff1`. + Phase → Activity → Task → Duty 도메인 검증과 투영은 로컬·hosted 전체 적용 + 테스트를 통과했지만 `REVIEW_REQUIRED`라 병합하지 않았다. +- #623: stacked base `refactor/schema-migration-ledger-433@9f2e6818` 대상 + `81072df8f4dd2e2df269710eb7cc852312ff7543`, draft 상태. canonical SQLite + rename의 31개 schema/migration 테스트는 통과했지만 독립 병합 근거가 없다. +- #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, + draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 + provider 장애와 authoritative report 부재로 fail-closed 되었다. - #624: `69eff955bc16295a6d82b72174b25d8ec94345c1`은 base `feat/wbs-search-context`에 normal squash merge되어 단일 squash commit `5f8a3d7759aef628f4bcf06f3780c53737ca2a53`가 되었다. From c00fa49e1ec4371e20db1546fdf1f772a39faaa4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:16:23 +0900 Subject: [PATCH 006/115] docs: reconcile closed duplicate PR lanes --- .../product-technical-gap-baseline.md | 3 +++ docs/product-technical-gap-baseline.md | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 66bb6b7a..6a7bbbe2 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -15,3 +15,6 @@ local or partial hosted results as merge authority. - Research mapping remains anchored to ISO 21502, ISO 21511, ISO 21508, WCAG 2.2, NIST SSDF 1.1, and the preserved PM-analysis sources listed in the baseline. +- Reconciled newly observed PRs: retained #588 as the single outbound-webhook + SSRF lane, recorded #628's accessibility result and pre-existing modulepreload + E2E gap, and closed duplicate #626/#627 lanes. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 17c1d960..b9dde691 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current verdict 부재; #621/#552 Strix provider 실패; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current verdict 부재; #588 Strix provider 실패; #628 OpenCode current verdict 부재; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -113,6 +113,25 @@ HEAD가 바뀌면 다시 확인해야 한다. - #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 provider 장애와 authoritative report 부재로 fail-closed 되었다. +- #588: `develop@2c328875` 대상 `bc60476829ec98f37d83977a9432b79ba0b3c0d6`. + outbound webhook SSRF 단일 수정 경로로서 encoded IP, IPv4/IPv6 special-use + 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. + 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval + 부재로 병합하지 않았다. +- #628: `develop@2c328875` 대상 `7d27ff23a3eac6548b904f91f2282f0efcc5c5a5`. + 비상호작용 tooltip의 keyboard focus, semantic role, focus-visible 표시를 + 추가했고 단독 E2E 75개가 통과했다. 현재 base의 modulepreload 누락으로 + 기존 static E2E 1개가 실패하며, OpenCode current-head verdict 부재와 + qualifying approval 없음으로 병합하지 않았다. +- #495: `develop@2c328875` 대상 `dcdc8da7f8f07dfda42f6ad0f189d4d842d94736`. + 정적 shell의 `cloud-sync.js`·`analytics.js` modulepreload를 제공하는 + 제출본이다. #628에서 확인한 기존 E2E 실패의 별도 소유 경로이며, OpenCode/ + Strix 게이트와 qualifying approval을 재확인해야 한다. +- #626: `d0141077d3bb790786520efa3d115d4dd2ce70bf`는 #508의 + `computeTaskMetrics` 최적화와 중복되어 종료했다. #627: + `c91715a4ad4f8865e7e6a90ffc51fdb8b16fd360`은 문자열 필터만으로는 + encoded IP·DNS rebinding을 막지 못해 종료하고, 보안 수정은 #588에 + 단일화했다. - #624: `69eff955bc16295a6d82b72174b25d8ec94345c1`은 base `feat/wbs-search-context`에 normal squash merge되어 단일 squash commit `5f8a3d7759aef628f4bcf06f3780c53737ca2a53`가 되었다. From d084c8bc3d208e59b2057062c4fc9da68a0db26c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:27:56 +0900 Subject: [PATCH 007/115] docs: record current performance review head --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b9dde691..0334640a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current verdict 부재; #588 Strix provider 실패; #628 OpenCode current verdict 부재; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -123,10 +123,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 추가했고 단독 E2E 75개가 통과했다. 현재 base의 modulepreload 누락으로 기존 static E2E 1개가 실패하며, OpenCode current-head verdict 부재와 qualifying approval 없음으로 병합하지 않았다. -- #495: `develop@2c328875` 대상 `dcdc8da7f8f07dfda42f6ad0f189d4d842d94736`. +- #495: `develop@2c328875` 대상 `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. 정적 shell의 `cloud-sync.js`·`analytics.js` modulepreload를 제공하는 제출본이다. #628에서 확인한 기존 E2E 실패의 별도 소유 경로이며, OpenCode/ - Strix 게이트와 qualifying approval을 재확인해야 한다. + Strix 게이트와 qualifying approval을 재확인해야 한다. 로컬 5,000행 + production benchmark는 180초 제한에서 interaction probe가 종료되지 않아 + hosted 성능 증거로 대체하지 않았다. - #626: `d0141077d3bb790786520efa3d115d4dd2ce70bf`는 #508의 `computeTaskMetrics` 최적화와 중복되어 종료했다. #627: `c91715a4ad4f8865e7e6a90ffc51fdb8b16fd360`은 문자열 필터만으로는 From 11ef2e4265081f78a55383c418b5122f48e0b55c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:34:17 +0900 Subject: [PATCH 008/115] docs: record numeric metadata roundtrip fix --- docs/doctoring/product-technical-gap-baseline.md | 6 ++++-- docs/product-technical-gap-baseline.md | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 6a7bbbe2..83f7a562 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -8,8 +8,10 @@ - Recorded the exact #624 squash merge into the #621 feature branch and the subsequent #621 exact head `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`, including the CSV search reset, sample-onboarding persistence fixes, and debounced search rerender. -- Recorded #610 OpenCode/Strix gate failures as non-authorizing external evidence, - including the missing current-head verdict and provider HTTP 500 report absence. +- Recorded #610's exact-head review and gate evidence as non-authorizing: the prior + cloud E2E failure exposed `??` preserving falsy text metadata in JSON sync, which + was fixed in `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a`; its replacement Checks + were pending at doctoring time, with approval still absent. - Added exact-head evidence for #515, stacked draft #623, and draft security PR #552; preserved their review/approval and provider-gate limits instead of treating green local or partial hosted results as merge authority. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0334640a..c558afbd 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #610 `3bb2bd9` Checks 재실행 중; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -98,9 +98,11 @@ HEAD가 바뀌면 다시 확인해야 한다. `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스하는 현재 제출본이다. -- #610: `40f26217609dd5836a91ab535c01ead266143078`. 일반 보안·테스트·cloud - E2E는 통과했지만 OpenCode는 해당 HEAD verdict 부재로 실패했고, Strix는 - provider HTTP 500과 구조화 vulnerability report 부재로 fail-closed 되었다. +- #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base + `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 + `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 + `task.predecessors || ''` 및 `task.sprint || ''`로 수정했다. 현재 head의 + replacement Checks는 재실행 중이며, qualifying approval은 없다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. From 0775c429292dc3101b15aea23aa80cbf3ccfd6eb Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:39:14 +0900 Subject: [PATCH 009/115] docs: record empty-state accessibility repair --- docs/doctoring/product-technical-gap-baseline.md | 4 ++++ docs/product-technical-gap-baseline.md | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 83f7a562..2f0e228d 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -20,3 +20,7 @@ - Reconciled newly observed PRs: retained #588 as the single outbound-webhook SSRF lane, recorded #628's accessibility result and pre-existing modulepreload E2E gap, and closed duplicate #626/#627 lanes. +- Repaired #608's current-head accessibility defects: synchronized the persistent + empty-state help element's DOM `hidden` state and updated the legacy empty-state + E2E assertion to the native-disabled/`aria-describedby` contract; replacement + focused E2E and unit checks passed locally. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c558afbd..c3e728b0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #610 `3bb2bd9` Checks 재실행 중; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9` Checks 재실행 중; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -103,6 +103,11 @@ HEAD가 바뀌면 다시 확인해야 한다. `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 `task.predecessors || ''` 및 `task.sprint || ''`로 수정했다. 현재 head의 replacement Checks는 재실행 중이며, qualifying approval은 없다. +- #608: `83b8949157e0bb6cd9a8b967c807e9238ddac943` (base + `develop@2c328875`). 빈 상태 도움말의 DOM `hidden` 상태를 `renderAll()`의 + 작업 존재 여부와 동기화하고, 제거된 tooltip을 기대하던 기존 E2E를 + `disabled`·`aria-describedby`·지속 설명 계약으로 갱신했다. focused E2E와 + unit은 통과했으며, 현재 head의 hosted Checks는 재실행 중이고 승인은 없다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. From 6e660e0c4bee08ddcd71f133dc4ec90befaf22a8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:44:30 +0900 Subject: [PATCH 010/115] docs: record trusted proxy boundary repair --- docs/doctoring/product-technical-gap-baseline.md | 4 ++++ docs/product-technical-gap-baseline.md | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/doctoring/product-technical-gap-baseline.md b/docs/doctoring/product-technical-gap-baseline.md index 2f0e228d..b0ab9596 100644 --- a/docs/doctoring/product-technical-gap-baseline.md +++ b/docs/doctoring/product-technical-gap-baseline.md @@ -24,3 +24,7 @@ empty-state help element's DOM `hidden` state and updated the legacy empty-state E2E assertion to the native-disabled/`aria-describedby` contract; replacement focused E2E and unit checks passed locally. +- Repaired #587's direct `application_routes_core.mjs` rate-limit boundary by + reusing the validated trusted-proxy middleware and adding a direct-core probe; + full coverage/API validation passed locally, while replacement hosted Checks + remained queued and qualifying approval was absent. diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c3e728b0..f8587601 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9` Checks 재실행 중; qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -108,6 +108,15 @@ HEAD가 바뀌면 다시 확인해야 한다. 작업 존재 여부와 동기화하고, 제거된 tooltip을 기대하던 기존 E2E를 `disabled`·`aria-describedby`·지속 설명 계약으로 갱신했다. focused E2E와 unit은 통과했으며, 현재 head의 hosted Checks는 재실행 중이고 승인은 없다. +- #587: `1f93371c9df84a2f60dd3386c6429d63d750c50c` (base + `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 + 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, + `server/rate_limit.mjs`의 설정 검증·trusted transport peer·bucket 상한을 + 공유하도록 했다. direct-core rate-limit, 전체 coverage/API는 로컬 통과했으며, + replacement hosted Checks는 queued이고 qualifying approval은 없다. +- #596: `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. 공급자 진단을 고객에게 + 노출하지 않는 502 envelope이며 hosted 보안·테스트·OpenCode·Strix·Devin + Checks는 통과했지만 qualifying approval이 없어 병합하지 않았다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. From 587daeafba2d4cadcad3b1e50d9afd63a2b488d0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:48:32 +0900 Subject: [PATCH 011/115] docs: record download link PR evidence --- docs/product-technical-gap-baseline.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f8587601..6e5990e6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -117,6 +117,11 @@ HEAD가 바뀌면 다시 확인해야 한다. - #596: `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. 공급자 진단을 고객에게 노출하지 않는 502 envelope이며 hosted 보안·테스트·OpenCode·Strix·Devin Checks는 통과했지만 qualifying approval이 없어 병합하지 않았다. +- #550: `9267d2d7686ea7891591a600187ebc21428b13ba` (base + `develop@2c328875`). 로컬 CSV와 cloud 조직·캘린더·감사 로그 다운로드가 + 공유된 안전한 임시 앵커 경로를 사용하고, 설정·click·cleanup·URL revoke + 오류의 최초 원인을 보존한다. 현재 hosted required Checks는 통과했고 + Devin은 결함을 보고하지 않았지만 qualifying approval이 없어 병합하지 않았다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. From 416a4c23ff198c23ba86dc95999e2689de7d483b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:53:46 +0900 Subject: [PATCH 012/115] docs: record SSRF blocker and canonical lane --- docs/product-technical-gap-baseline.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6e5990e6..896a9fd6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -139,6 +139,11 @@ HEAD가 바뀌면 다시 확인해야 한다. 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval 부재로 병합하지 않았다. +- #576: `develop@2c328875` 대상 `62484c2dbeb755fd80fbc123d34e55df7755bda8`. + Strix exact-head report가 기존 webhook 등록 경로에서 인증 사용자가 + 내부 주소로 outbound 요청을 유도할 수 있는 MEDIUM SSRF를 보고했다. + 이 경로의 canonical 수정은 #588에 단일화했으므로 #576에는 중복 패치를 + 넣지 않고, #576은 해당 보안 근거와 승인 부재로 병합하지 않았다. - #628: `develop@2c328875` 대상 `7d27ff23a3eac6548b904f91f2282f0efcc5c5a5`. 비상호작용 tooltip의 keyboard focus, semantic role, focus-visible 표시를 추가했고 단독 E2E 75개가 통과했다. 현재 base의 modulepreload 누락으로 From 044119ff67a8b42546226b02b8ff3775cf8ff9be Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 28 Aug 2026 23:55:53 +0900 Subject: [PATCH 013/115] docs: record modal performance gate status --- docs/product-technical-gap-baseline.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 896a9fd6..81c458a6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -122,6 +122,11 @@ HEAD가 바뀌면 다시 확인해야 한다. 공유된 안전한 임시 앵커 경로를 사용하고, 설정·click·cleanup·URL revoke 오류의 최초 원인을 보존한다. 현재 hosted required Checks는 통과했고 Devin은 결함을 보고하지 않았지만 qualifying approval이 없어 병합하지 않았다. +- #578: `e9575ee404ae9c725d009833639f12a0d890df9e` (base + `develop@2c328875`). 첨부·코멘트 모달의 task label lookup을 한 번의 Map + 구성으로 바꾸고 2,000-task/40-comment 브라우저 회귀를 통과했다. 현재 + hosted Strix는 provider/backend unavailable로 authoritative report를 + 만들지 못했고 qualifying approval도 없어 병합하지 않았다. - #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix provider/backend 실패와 승인 부재로 병합하지 않았다. From 98fbaa14bdd7946fc260ffbb33e3a3f5fbceb2fb Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:14:23 +0900 Subject: [PATCH 014/115] docs: refresh exact-head queue evidence --- docs/product-technical-gap-baseline.md | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 81c458a6..36c32c00 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -81,7 +81,7 @@ classDiagram ## 4. 현재 PR 및 Gap 조치 상태 -이 표는 2026-08-28의 GitHub exact-head snapshot이다. Checks와 리뷰는 +이 표는 2026-08-29의 GitHub exact-head snapshot이다. Checks와 리뷰는 HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -144,6 +144,30 @@ HEAD가 바뀌면 다시 확인해야 한다. 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval 부재로 병합하지 않았다. +- #498: `fix/clearfolio-production-configuration@78f8b557` 대상 + `940858859b27060241864e633659f656907616b1`. 이전 hosted unit-and-api가 + persistence `TimeoutError` 회귀 테스트의 잘못된 `READY` fixture를 + `invalid_status`로 분류해 실패했다. 공유 분류 함수는 provider lookup + 단계에서만 native `TimeoutError`를 timeout으로 매핑하고, fixture는 유효한 + `SUCCEEDED`로 고쳤다. local coverage/unit/API는 통과했으며 replacement + Checks는 queued이고 qualifying approval은 없다. +- #505: `develop@2c328875` 대상 + `b8435c719baf4ee9eaa2907e2c93c6d959711d66`. provider가 반환한 Checkout + redirect가 임의 HTTPS 호스트로 향하지 않도록 정확한 + `checkout.stripe.com` 기본 포트를 검증하는 최소 보완을 넣었다. local + billing unit/API는 통과했으며 replacement hosted Checks는 queued이고 + qualifying approval은 없다. +- #511: stacked base + `fix/stripe-checkout-provider-boundary-488@5d1bf1b023d4152610d9bc247c02da27429d33cd` 대상 + `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 + durable provider outcome 경계를 점검했고 current local billing unit/API와 + hosted stacked Checks는 통과했지만 qualifying approval은 없다. +- #537: stacked base `feat/clearfolio-capability-readiness-489@9e465a2c` 대상 + `abcd68c20ef073818d1869f2a5e891fb99248a05`. Clearfolio configuration + readiness를 liveness와 분리하고 authenticated capability/503 표면을 + 추가한 제출본으로 local readiness·unit·API는 통과했다. 전체 E2E의 1개 + modulepreload 실패는 이 stack 이전의 #628/#495 경로이며, stacked hosted + Checks는 통과했지만 protected develop 승인 근거는 없다. - #576: `develop@2c328875` 대상 `62484c2dbeb755fd80fbc123d34e55df7755bda8`. Strix exact-head report가 기존 webhook 등록 경로에서 인증 사용자가 내부 주소로 outbound 요청을 유도할 수 있는 MEDIUM SSRF를 보고했다. From 72aab98221342e8261a1c2033fec43a5b7a4dda6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:22:26 +0900 Subject: [PATCH 015/115] docs: record hono security patch validation --- docs/product-technical-gap-baseline.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 36c32c00..d471f50f 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -168,6 +168,13 @@ HEAD가 바뀌면 다시 확인해야 한다. 추가한 제출본으로 local readiness·unit·API는 통과했다. 전체 E2E의 1개 modulepreload 실패는 이 stack 이전의 #628/#495 경로이며, stacked hosted Checks는 통과했지만 protected develop 승인 근거는 없다. +- #602: `develop@2c328875` 대상 `78e803718d1c90a09c7827cc98c980e99e231454`. + Hono를 registry 최신 보안 패치 4.13.5로 갱신하고 package/lockfile을 함께 + 재생성했다. `npm ci`, production `npm audit`(취약점 0), unit·API·coverage는 + 통과했다. 전체 E2E는 75/76 통과했으며 유일한 실패는 기존 + `modulepreload` 링크 기대다. 이전 4.13.4 head의 OpenCode verdict 부재와 + Strix LLM HTTP 500은 current-head 보안 판정이 아니며, 새 head replacement + Checks는 queued/in-progress이고 qualifying approval은 없다. - #576: `develop@2c328875` 대상 `62484c2dbeb755fd80fbc123d34e55df7755bda8`. Strix exact-head report가 기존 webhook 등록 경로에서 인증 사용자가 내부 주소로 outbound 요청을 유도할 수 있는 MEDIUM SSRF를 보고했다. From f6a888d7a0153df63a6b85145d94a830be4d7ac0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:24:43 +0900 Subject: [PATCH 016/115] docs: record hierarchy review evidence --- docs/product-technical-gap-baseline.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d471f50f..fa77956b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -175,6 +175,11 @@ HEAD가 바뀌면 다시 확인해야 한다. `modulepreload` 링크 기대다. 이전 4.13.4 head의 OpenCode verdict 부재와 Strix LLM HTTP 500은 current-head 보안 판정이 아니며, 새 head replacement Checks는 queued/in-progress이고 qualifying approval은 없다. +- #515: `develop@2c328875` 대상 `36c11dd0bf907569184d7d73172b675d21bd0ff1`. + four-level hierarchy domain의 immutable projection이 persisted `kind`와 + `sourceIndex`를 nested `record` 안에서 보존하는지 current CodeGraph와 + CodeRabbit 지적을 대조 검토했다. hierarchy unit 10개와 전체 unit·API·coverage가 + 통과했고 hosted Checks와 Strix도 통과했지만 qualifying approval은 없다. - #576: `develop@2c328875` 대상 `62484c2dbeb755fd80fbc123d34e55df7755bda8`. Strix exact-head report가 기존 webhook 등록 경로에서 인증 사용자가 내부 주소로 outbound 요청을 유도할 수 있는 MEDIUM SSRF를 보고했다. From 212b6bceeafdfebca0c28e1a08190fdb4dc306eb Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:32:15 +0900 Subject: [PATCH 017/115] docs: record PR 531 and 601 gate evidence --- docs/product-technical-gap-baseline.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index fa77956b..83b466d5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -180,6 +180,20 @@ HEAD가 바뀌면 다시 확인해야 한다. `sourceIndex`를 nested `record` 안에서 보존하는지 current CodeGraph와 CodeRabbit 지적을 대조 검토했다. hierarchy unit 10개와 전체 unit·API·coverage가 통과했고 hosted Checks와 Strix도 통과했지만 qualifying approval은 없다. +- #531: `develop@2c328875` 대상 + `b6842e7cf60f77b1d5cee04e1c020e411afc9a6f`. SQLite backup의 read-only + source/WAL 처리, bounded schema streaming, destination race 방지, + source replacement guard와 recovery 문서 포인터를 current CodeGraph·테스트·리뷰 + 지적과 대조했고 focused recovery/output/schema/source/temp 테스트는 통과했다. + Strix artifact는 `invalid_tools` 400으로 중단되어 authoritative clean verdict가 + 없고, qualifying approval도 없어 병합하지 않았다. +- #601: `develop@2c328875` 대상 + `98f4354733c68c9f361e516f86ba2d95e97af20`. 날짜 formatter의 native-compatible + zero-padding과 benchmark checksum fail-closed 수정을 current CodeGraph·리뷰와 + 대조했다. unit·API·coverage는 통과했고 전체 E2E는 78/79 통과(유일한 실패는 + 기존 `modulepreload` 기대)했으며, Strix는 NVIDIA 429/OpenAI 404 provider + 실패로 authoritative clean verdict가 없다. qualifying approval도 없어 병합하지 + 않았다. - #576: `develop@2c328875` 대상 `62484c2dbeb755fd80fbc123d34e55df7755bda8`. Strix exact-head report가 기존 webhook 등록 경로에서 인증 사용자가 내부 주소로 outbound 요청을 유도할 수 있는 MEDIUM SSRF를 보고했다. From c49647dc2a4fe987b6061bf31c65d50e99f8fafa Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:34:25 +0900 Subject: [PATCH 018/115] docs: reconcile baseline review findings --- docs/product-technical-gap-baseline.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 83b466d5..98ef7ea8 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1,6 +1,6 @@ # ScopeWeave 제품·기술 Gap Baseline -> 기준일: 2026-08-28 | 보호 기준 브랜치: `develop` | 보호 기준 HEAD: `2c328875e00e86537df3e965170be80532571cad` +> 기준일: 2026-08-29 | 보호 기준 브랜치: `develop` | 보호 기준 HEAD: `2c328875e00e86537df3e965170be80532571cad` 이 문서는 저장소의 PRD 역할을 하는 설계 문서와 README, 기술 계약, 구현·테스트·운영 게이트를 현재 파일과 실행 증거에 연결하는 기준선이다. @@ -127,12 +127,6 @@ HEAD가 바뀌면 다시 확인해야 한다. 구성으로 바꾸고 2,000-task/40-comment 브라우저 회귀를 통과했다. 현재 hosted Strix는 provider/backend unavailable로 authoritative report를 만들지 못했고 qualifying approval도 없어 병합하지 않았다. -- #601: `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter benchmark는 - protected base 대비 46.79% 개선과 checksum `118184592`를 기록했으나 Strix - provider/backend 실패와 승인 부재로 병합하지 않았다. -- #515: `develop@2c328875` 대상 `36c11dd0bf907569184d7d73172b675d21bd0ff1`. - Phase → Activity → Task → Duty 도메인 검증과 투영은 로컬·hosted 전체 적용 - 테스트를 통과했지만 `REVIEW_REQUIRED`라 병합하지 않았다. - #623: stacked base `refactor/schema-migration-ledger-433@9f2e6818` 대상 `81072df8f4dd2e2df269710eb7cc852312ff7543`, draft 상태. canonical SQLite rename의 31개 schema/migration 테스트는 통과했지만 독립 병합 근거가 없다. @@ -224,8 +218,10 @@ HEAD가 바뀌면 다시 확인해야 한다. - 런타임 의존성은 브라우저 native API와 현재 서버의 최소 의존성만 사용한다. - `app.js`는 `new Function` 테스트 계약 때문에 top-level ESM import/export를 사용하지 않는다. -- 입력은 신뢰 경계에서 길이·날짜·CSV 수식·JSON prototype pollution을 검증하고, - 동적 HTML 삽입 대신 `textContent`를 사용한다. +- 입력은 신뢰 경계에서 길이·날짜·CSV 수식·JSON prototype pollution을 검증한다. + 확인된 앱 UI의 동적 텍스트 출력은 `textContent` 경로를 사용하고, + `innerHTML`은 cloud-sync의 상수 UI 템플릿으로 제한한다. `escapeHtml()`은 + 현재 호출 경로가 확인되지 않아 보안 근거로 세지 않는다. - 접근성은 레이블, landmark, keyboard focus, live status, disabled 상태, reduced motion을 최소 기준으로 삼는다. - 검증 명령은 `npm run test:unit`, `npm run test:api`, `npm run test:e2e`, From 2410f85936f568c6bfd9fb9bb35c7e6d36b0d0ac Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:38:30 +0900 Subject: [PATCH 019/115] docs: record search PR gate evidence --- docs/product-technical-gap-baseline.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 98ef7ea8..c9a400da 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,14 +90,17 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #621 Strix provider 실패; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, - 빠른 검색 입력의 전체 재렌더를 디바운스하는 현재 제출본이다. + 빠른 검색 입력의 전체 재렌더를 디바운스하는 현재 제출본이다. local unit·API와 + 검색·온보딩 focused E2E 6개는 통과했지만 OpenCode는 current-head verdict 부재로, + Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었고 + qualifying approval도 없다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 0f8313151fee6c66746a2e47093c7732d6507897 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:41:00 +0900 Subject: [PATCH 020/115] docs: record accessibility PR evidence --- docs/product-technical-gap-baseline.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c9a400da..40b299d6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -89,7 +89,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `4c8d09d`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | -| G-04 | 핵심 상태의 시각 회귀 증거 부족 | 미해결 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | +| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #509 `ea90277`, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | | G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #621 Strix provider 실패; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -101,6 +101,11 @@ HEAD가 바뀌면 다시 확인해야 한다. 검색·온보딩 focused E2E 6개는 통과했지만 OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었고 qualifying approval도 없다. +- #509: `develop@2c328875` 대상 + `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 + keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. + focused 접근성·literal-title E2E 6개와 hosted required Checks·Strix는 통과했지만 + `REVIEW_REQUIRED`이며 qualifying approval이 없어 병합하지 않았다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 2080e5dde8561e92cb0a12a69b45859b7e6a5b23 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:43:41 +0900 Subject: [PATCH 021/115] docs: record metrics PR gate evidence --- docs/product-technical-gap-baseline.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 40b299d6..6375a03c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #509 `ea90277`, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #621 Strix provider 실패; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #621/#508 Strix provider 실패; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -106,6 +106,12 @@ HEAD가 바뀌면 다시 확인해야 한다. keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. focused 접근성·literal-title E2E 6개와 hosted required Checks·Strix는 통과했지만 `REVIEW_REQUIRED`이며 qualifying approval이 없어 병합하지 않았다. +- #508: `develop@2c328875` 대상 + `642034faf5c97ca8730a70ef89edf6f4fdd54840`. `computeTaskMetrics`의 + duration cache를 `Int32Array`와 명시적 loop로 바꾼 제출본으로 benchmark-base + unit 16개와 hosted unit·API·cloud E2E는 통과했다. OpenCode는 current-head + verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 + fail-closed 되었고 `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From a8d824fb9fb21d0e36cb1523aa01c922368becdc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:48:43 +0900 Subject: [PATCH 022/115] docs: record render PR gate evidence --- docs/product-technical-gap-baseline.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6375a03c..094f1321 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -112,6 +112,12 @@ HEAD가 바뀌면 다시 확인해야 한다. unit 16개와 hosted unit·API·cloud E2E는 통과했다. OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었고 `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. +- #495: `develop@2c328875` 대상 + `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. metadata-only render 경계, + owner/status DOM shell 재사용, row identity 보존과 badge contrast 회귀를 + current CodeGraph·resolved 리뷰와 대조했고 hosted unit·API·cloud E2E는 + 통과했다. OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500과 + vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 6652b83d38dd1cb9354889043c29395ec4e739dc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:52:38 +0900 Subject: [PATCH 023/115] docs: record schema ledger PR evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 094f1321..c0232636 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -150,6 +150,13 @@ HEAD가 바뀌면 다시 확인해야 한다. - #623: stacked base `refactor/schema-migration-ledger-433@9f2e6818` 대상 `81072df8f4dd2e2df269710eb7cc852312ff7543`, draft 상태. canonical SQLite rename의 31개 schema/migration 테스트는 통과했지만 독립 병합 근거가 없다. +- #500: `develop@2c328875` 대상 + `b7ef5c587aac52d03880b087af39580ff52384cc`. fail-closed schema migration + ledger의 unknown-object, ledger-contract, compatibility-column 및 concurrent + startup 경계를 current CodeGraph·resolved 리뷰와 대조했고 관련 unit/API와 + coverage 전체 계약은 통과했다. hosted 보안·테스트 게이트는 통과했지만 + OpenCode는 current-head 승인 verdict 부재로, Strix는 provider HTTP 500과 + vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. - #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 provider 장애와 authoritative report 부재로 fail-closed 되었다. From 3966e2fce6bd2c09e4e7b9121ad4edc8118006fc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 00:55:01 +0900 Subject: [PATCH 024/115] docs: record workflow registry PR evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c0232636..cf223da1 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -157,6 +157,13 @@ HEAD가 바뀌면 다시 확인해야 한다. coverage 전체 계약은 통과했다. hosted 보안·테스트 게이트는 통과했지만 OpenCode는 current-head 승인 verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. +- #497: `develop@2c328875` 대상 + `9d23bbf5768f41542f3b3c5eac75d17220b0dcf0`. workflow registry의 pagination + 완결성·immutable tree 증거, exact-SHA preflight와 identity drift 방지, + dry-run 기본값 및 명시적 apply 조건을 current CodeGraph·resolved 리뷰와 + 대조했고 audit/cleanup/timeout/coverage 및 API 검증은 통과했다. hosted + required Checks와 Strix는 통과했지만 qualifying approval이 없어 병합하지 + 않았다. - #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 provider 장애와 authoritative report 부재로 fail-closed 되었다. From fcf815d30410a204daafeea0586338158835c3a0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:00:49 +0900 Subject: [PATCH 025/115] docs: record editor accessibility evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index cf223da1..84ead0b1 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -118,6 +118,13 @@ HEAD가 바뀌면 다시 확인해야 한다. current CodeGraph·resolved 리뷰와 대조했고 hosted unit·API·cloud E2E는 통과했다. OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. +- #468: `develop@2c328875` 대상 + `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, + 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula + compatibility 문자를 current CodeGraph·resolved 리뷰와 대조했다. local + unit·coverage/API와 전체 E2E 81개, screenshot 검수 및 hosted OpenCode·보안· + 테스트 게이트는 통과했다. Strix artifact는 0 findings를 기록했지만 후속 + provider 장애로 gate가 fail-closed 되었고 qualifying approval도 없다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From c84c87a7c8eeabdd479b3b7be7685580d9324dbf Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:03:46 +0900 Subject: [PATCH 026/115] docs: record focus restoration evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 84ead0b1..ce700b5c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -125,6 +125,13 @@ HEAD가 바뀌면 다시 확인해야 한다. unit·coverage/API와 전체 E2E 81개, screenshot 검수 및 hosted OpenCode·보안· 테스트 게이트는 통과했다. Strix artifact는 0 findings를 기록했지만 후속 provider 장애로 gate가 fail-closed 되었고 qualifying approval도 없다. +- #490: `develop@2c328875` 대상 + `10bd1f3cedb1898fd3a50c4ab84161d7fd9b232e`. editor invoker의 stable ID/action/ + task identity 기록, rerender 이후 allowlisted control 복원과 selector-hostile + persisted ID 방어를 current CodeGraph·resolved 리뷰와 대조했다. focused + focus E2E 9개와 editor unit은 통과했고, hosted OpenCode·보안·테스트 게이트는 + 통과했다. Strix는 SARIF 0 findings 뒤 provider infrastructure failure로 + fail-closed 되었으며 qualifying approval도 없어 병합하지 않았다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 864365af8bf76c391b5749ec254a289bd0c37fb8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:10:02 +0900 Subject: [PATCH 027/115] docs: record exact-head CI evidence --- docs/product-technical-gap-baseline.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ce700b5c..b78f5b04 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -178,6 +178,14 @@ HEAD가 바뀌면 다시 확인해야 한다. 대조했고 audit/cleanup/timeout/coverage 및 API 검증은 통과했다. hosted required Checks와 Strix는 통과했지만 qualifying approval이 없어 병합하지 않았다. +- #523: `develop@2c328875` 대상 + `135117e0594939240e787a161574b6fb4e10f155`. Server Tests의 PR head 고정, + runtime checkout 검증, browser/server coverage failure evidence, live-base + dependency comparison, CodeQL/OSV exact-head 및 stacked PR contract를 + current CodeGraph·resolved 리뷰와 대조했고 local server coverage 100%와 + browser coverage 154개가 통과했다. hosted unit·API·cloud E2E·security· + CodeQL·fuzz·Noema는 통과했지만 OpenCode current-head required check는 + 실패했고 qualifying approval도 없어 병합하지 않았다. - #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 provider 장애와 authoritative report 부재로 fail-closed 되었다. From 86da42ad1e03453f8222b10c243d7b9af528552d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:13:09 +0900 Subject: [PATCH 028/115] docs: record Clearfolio configuration evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b78f5b04..74778446 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -194,6 +194,13 @@ HEAD가 바뀌면 다시 확인해야 한다. 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval 부재로 병합하지 않았다. +- #493: `develop@2c328875` 대상 + `78f8b557cd2b9cab238af72304f0ed42e1557759`. Clearfolio production 설정의 + fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 방지, artifact link의 + same-origin·credential·fragment 검증을 current CodeGraph·resolved 리뷰와 + 대조했다. Clearfolio 관련 unit 4개와 전체 unit·API, hosted OpenCode·Strix· + security·cloud E2E Checks가 통과했지만 qualifying approval이 없어 병합하지 + 않았다. - #498: `fix/clearfolio-production-configuration@78f8b557` 대상 `940858859b27060241864e633659f656907616b1`. 이전 hosted unit-and-api가 persistence `TimeoutError` 회귀 테스트의 잘못된 `READY` fixture를 From 763bd4d20b40f9d797cdfcde9781fe03b6c22875 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:14:56 +0900 Subject: [PATCH 029/115] docs: record stacked billing evidence --- docs/product-technical-gap-baseline.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 74778446..0c551b58 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -214,6 +214,14 @@ HEAD가 바뀌면 다시 확인해야 한다. `checkout.stripe.com` 기본 포트를 검증하는 최소 보완을 넣었다. local billing unit/API는 통과했으며 replacement hosted Checks는 queued이고 qualifying approval은 없다. +- #507: stacked base + `feat/stripe-trusted-checkout-config-488@b80d502e659fa9c65a665f7b74fd52a460b91e54` + 대상 `12fd922ea76032c7b7855d8764fc5512476bddb8`. Stripe direct transport의 + redirect 차단, 응답 body cleanup, 1 MiB response bound와 exact hosted-authority + 검증을 current CodeGraph·resolved 리뷰와 대조했고 billing focused 10+8개와 + coverage contract가 통과했다. hosted unit/API·cloud E2E·OSV·dependency + Checks는 통과했지만 현재 base와 `DIRTY/CONFLICTING` 상태이고 qualifying + approval이 없어 rebase·우회 병합하지 않았다. - #511: stacked base `fix/stripe-checkout-provider-boundary-488@5d1bf1b023d4152610d9bc247c02da27429d33cd` 대상 `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 From 7a26299f7535760728a400f81e2ba0f9c98d67f7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:17:23 +0900 Subject: [PATCH 030/115] docs: record schedule domain evidence --- docs/product-technical-gap-baseline.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0c551b58..1772c90b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -245,6 +245,22 @@ HEAD가 바뀌면 다시 확인해야 한다. `sourceIndex`를 nested `record` 안에서 보존하는지 current CodeGraph와 CodeRabbit 지적을 대조 검토했다. hierarchy unit 10개와 전체 unit·API·coverage가 통과했고 hosted Checks와 Strix도 통과했지만 qualifying approval은 없다. +- #517: stacked base + `feat/work-item-hierarchy-domain-287@36c11dd0bf907569184d7d73172b675d21bd0ff1` + 대상 `73ce4227d761c79a9fcad39b0455fec4b35b6274`. schedule outcome의 UTC + explicit-offset timestamp, blocker lifecycle, terminal-reason precedence와 + immutable explanation을 current CodeGraph·resolved 리뷰와 대조했고 domain + unit 12+8개가 통과했다. hosted listed unit/API·cloud E2E·OSV·dependency 및 + Devin Checks는 통과했지만 current OpenCode/Strix check entry와 qualifying + approval은 없어 병합하지 않았다. +- #518: stacked base + `feat/schedule-outcome-domain-287@73ce4227d761c79a9fcad39b0455fec4b35b6274` + 대상 `95982819c49cf08ed92b18795a80234882676d53`. terminal reason의 action + authorization, cancellation의 독립 approval·self-approval 방지, exact resource + version과 atomic commit receipt를 current CodeGraph·resolved 리뷰와 대조했고 + reason-event unit 13+1개와 coverage contract가 통과했다. hosted listed + unit/API·cloud E2E·OSV·dependency 및 Devin Checks는 통과했지만 current + OpenCode/Strix check entry와 qualifying approval은 없어 병합하지 않았다. - #531: `develop@2c328875` 대상 `b6842e7cf60f77b1d5cee04e1c020e411afc9a6f`. SQLite backup의 read-only source/WAL 처리, bounded schema streaming, destination race 방지, From aef3248e0a89775a4e9839b348444128bc5abd8f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:18:54 +0900 Subject: [PATCH 031/115] docs: record calendar subscription evidence --- docs/product-technical-gap-baseline.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 1772c90b..c4468aa8 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -261,6 +261,15 @@ HEAD가 바뀌면 다시 확인해야 한다. reason-event unit 13+1개와 coverage contract가 통과했다. hosted listed unit/API·cloud E2E·OSV·dependency 및 Devin Checks는 통과했지만 current OpenCode/Strix check entry와 qualifying approval은 없어 병합하지 않았다. +- #541: stacked base + `cursor/bc-4522f1d4-ae7e-434e-b612-d250afa4d097-5645@e2f560078d3e2862c5dc6c395c159d12dfe1e6fa` + 대상 `1e491bac2fc42b1f17c93666223ce1da78c6ba61`. calendar subscription SQLite + adapter의 `calendar_read` purpose 기본값, membership/issuance epoch 경계, + expiry·revoke·race·retention 및 secret-hash 저장을 current CodeGraph·resolved + 리뷰와 대조했고 calendar unit 26개가 통과했다. hosted listed unit/API·cloud + E2E·OSV·dependency 및 Devin Checks는 통과했지만 schema installer는 후속 + route integration 범위로 의도적으로 unwired이고 current OpenCode/Strix + check entry와 qualifying approval이 없어 병합하지 않았다. - #531: `develop@2c328875` 대상 `b6842e7cf60f77b1d5cee04e1c020e411afc9a6f`. SQLite backup의 read-only source/WAL 처리, bounded schema streaming, destination race 방지, From 9f35d6e89232fdbf3705d7fdb450650e9fd2b994 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:23:17 +0900 Subject: [PATCH 032/115] docs: record access-grant repair evidence --- docs/product-technical-gap-baseline.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c4468aa8..ac151722 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -222,6 +222,14 @@ HEAD가 바뀌면 다시 확인해야 한다. coverage contract가 통과했다. hosted unit/API·cloud E2E·OSV·dependency Checks는 통과했지만 현재 base와 `DIRTY/CONFLICTING` 상태이고 qualifying approval이 없어 rebase·우회 병합하지 않았다. +- #510: stacked base + `feat/access-grant-domain-413@f3ae1f1f4ee66024776507d75f8fb752b2bf748c` + 대상 current head `98fd12d145292ed198fde111bd02690c3e18ecbf`. SQLite access-grant + schema·membership epoch·one-time consume/audit 경계를 current CodeGraph와 + 대조했고, attachment 삭제와 mint가 경합할 때 FK extended code 787을 + nondisclosing `null` transition으로 변환하는 최소 수정과 회귀를 추가했다. + full unit·API·fuzz 및 access-grant focused 5+10+4+domain tests가 통과했으며, + replacement hosted Checks는 queued이고 qualifying approval은 없다. - #511: stacked base `fix/stripe-checkout-provider-boundary-488@5d1bf1b023d4152610d9bc247c02da27429d33cd` 대상 `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 From 70a449643e6d5a6de93ac1d0df40290bc4b17f5f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:25:00 +0900 Subject: [PATCH 033/115] docs: record access-grant domain evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ac151722..391a16d9 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -214,6 +214,13 @@ HEAD가 바뀌면 다시 확인해야 한다. `checkout.stripe.com` 기본 포트를 검증하는 최소 보완을 넣었다. local billing unit/API는 통과했으며 replacement hosted Checks는 queued이고 qualifying approval은 없다. +- #506: `develop@2c328875` 대상 + `f3ae1f1f4ee66024776507d75f8fb752b2bf748c`. short-lived access-grant domain의 + purpose/audience 고정, tenant-nondisclosing authorization, immutable grant + return boundary, atomic membership-version contract와 감사 내구성을 current + CodeGraph·resolved 리뷰와 대조했고 domain/edge/coverage contract가 + 통과했다. hosted OpenCode·Strix·security·unit/API·cloud E2E Checks는 + 통과했지만 `REVIEW_REQUIRED`이고 qualifying approval이 없어 병합하지 않았다. - #507: stacked base `feat/stripe-trusted-checkout-config-488@b80d502e659fa9c65a665f7b74fd52a460b91e54` 대상 `12fd922ea76032c7b7855d8764fc5512476bddb8`. Stripe direct transport의 From 916f9ec7aa862291c5652c142799919c620285d6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:26:30 +0900 Subject: [PATCH 034/115] docs: record documentation authority evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 391a16d9..1df2becc 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -221,6 +221,13 @@ HEAD가 바뀌면 다시 확인해야 한다. CodeGraph·resolved 리뷰와 대조했고 domain/edge/coverage contract가 통과했다. hosted OpenCode·Strix·security·unit/API·cloud E2E Checks는 통과했지만 `REVIEW_REQUIRED`이고 qualifying approval이 없어 병합하지 않았다. +- #503: `develop@2c328875` 대상 + `abc9639ffd7a6bd835a0f8206854185722d60965`. README·ARCHITECTURE·CLAUDE· + AGENTS 사이의 canonical runtime authority, live PR ancestry와 protected + branch 안내를 current CodeGraph·resolved 리뷰와 대조했고 + documentation-authority unit이 통과했다. hosted OpenCode·Strix·security· + unit/API·cloud E2E Checks는 통과했지만 qualifying approval이 없어 병합하지 + 않았다. - #507: stacked base `feat/stripe-trusted-checkout-config-488@b80d502e659fa9c65a665f7b74fd52a460b91e54` 대상 `12fd922ea76032c7b7855d8764fc5512476bddb8`. Stripe direct transport의 From fff07c0cf6d0825644bb394c45c6b60db50a3e0f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:30:37 +0900 Subject: [PATCH 035/115] docs: enrich orchestrator evidence --- docs/product-technical-gap-baseline.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 1df2becc..3b55d872 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -148,9 +148,12 @@ HEAD가 바뀌면 다시 확인해야 한다. `server/rate_limit.mjs`의 설정 검증·trusted transport peer·bucket 상한을 공유하도록 했다. direct-core rate-limit, 전체 coverage/API는 로컬 통과했으며, replacement hosted Checks는 queued이고 qualifying approval은 없다. -- #596: `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. 공급자 진단을 고객에게 - 노출하지 않는 502 envelope이며 hosted 보안·테스트·OpenCode·Strix·Devin - Checks는 통과했지만 qualifying approval이 없어 병합하지 않았다. +- #596: `develop@2c328875` 대상 `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. + provider diagnostic sanitization과 bounded/cancelled response handling을 + current CodeGraph·resolved 리뷰와 대조했고 orchestrator unit·coverage· + attribution focused tests가 통과했다. hosted 보안·테스트·OpenCode·Strix· + Devin Checks는 통과했지만 `REVIEW_REQUIRED`이고 qualifying approval이 없어 + 병합하지 않았다. - #550: `9267d2d7686ea7891591a600187ebc21428b13ba` (base `develop@2c328875`). 로컬 CSV와 cloud 조직·캘린더·감사 로그 다운로드가 공유된 안전한 임시 앵커 경로를 사용하고, 설정·click·cleanup·URL revoke From baf4b6365014d36a853a25aa7e743d1bf2e417a8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 01:36:37 +0900 Subject: [PATCH 036/115] docs: record Stripe boundary reconciliation --- docs/product-technical-gap-baseline.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3b55d872..8857215c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -232,13 +232,13 @@ HEAD가 바뀌면 다시 확인해야 한다. unit/API·cloud E2E Checks는 통과했지만 qualifying approval이 없어 병합하지 않았다. - #507: stacked base - `feat/stripe-trusted-checkout-config-488@b80d502e659fa9c65a665f7b74fd52a460b91e54` - 대상 `12fd922ea76032c7b7855d8764fc5512476bddb8`. Stripe direct transport의 - redirect 차단, 응답 body cleanup, 1 MiB response bound와 exact hosted-authority - 검증을 current CodeGraph·resolved 리뷰와 대조했고 billing focused 10+8개와 - coverage contract가 통과했다. hosted unit/API·cloud E2E·OSV·dependency - Checks는 통과했지만 현재 base와 `DIRTY/CONFLICTING` 상태이고 qualifying - approval이 없어 rebase·우회 병합하지 않았다. + `feat/stripe-trusted-checkout-config-488@b8435c719baf4ee9eaa2907e2c93c6d959711d66` + 대상 current head `6df68ade5064bd2a3b308f0d463792cc6f4e7111`. 부모 branch 전진으로 + 생긴 `server/billing.mjs` 충돌을 direct transport·trimmed credentials·exact + hosted-authority 검증을 보존하는 일반 merge commit으로 해소했다. current + CodeGraph·resolved 리뷰와 대조했고 billing focused 26개, coverage, 전체 + unit/API/fuzz가 통과했다. replacement hosted Checks는 queued이고 현재 + `MERGEABLE/UNSTABLE`, qualifying approval 없음이라 병합하지 않았다. - #510: stacked base `feat/access-grant-domain-413@f3ae1f1f4ee66024776507d75f8fb752b2bf748c` 대상 current head `98fd12d145292ed198fde111bd02690c3e18ecbf`. SQLite access-grant From cad385fc7e41f34de11234a9e87f0b61c4c8ea5b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 02:28:49 +0900 Subject: [PATCH 037/115] docs: record current accessibility and PR evidence --- docs/product-technical-gap-baseline.md | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 8857215c..a8428ceb 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,11 +27,11 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `4c8d09d` 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `3aaf9b7` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `4c8d09d` 제출본에 구현됨 | 제출됨, 병합 대기 | -| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624가 #621에 병합되어 제출됨 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `3aaf9b7` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `3aaf9b7` 제출본 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html` | 구현 완료, 실제 출판 증거 필요 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -89,18 +89,28 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `4c8d09d`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | -| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #509 `ea90277`, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #495/#621/#625/#628 OpenCode current verdict 부재; #621/#508 Strix provider 실패; #576 Strix가 현재 webhook 경로의 SSRF를 보고; #578/#588 Strix provider 실패; #608 `83b8949`·#610 `3bb2bd9`·#587 `1f93371` Checks 재실행 중; #498 `9408588`·#505 `b8435c7` 수정 후 Checks 재실행 중; #602 `78e8037` Hono 보안 패치 후 Checks 재실행 중; #531 `b6842e7`·#601 `98f4354` Strix provider 실패; #515 `36c11dd`는 Checks/Strix 통과지만 승인 없음; #550은 Checks 통과지만 승인 없음; #596은 Checks 통과지만 승인 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `03cdf855`가 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current-head check 실패; #621 Strix·Devin pending; #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks queued; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `4c8d09d17024202a1f5236ef62b31a8b5d9480c1`. CSV 성공 import 시 stale 검색어를 + `3aaf9b72e4b794c78b13b106692d4845243cc87a`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, - 빠른 검색 입력의 전체 재렌더를 디바운스하는 현재 제출본이다. local unit·API와 - 검색·온보딩 focused E2E 6개는 통과했지만 OpenCode는 current-head verdict 부재로, - Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었고 - qualifying approval도 없다. + 빠른 검색 입력의 전체 재렌더를 디바운스한다. 현재 부모 기준 local 전체 E2E + 95개와 unit/API가 통과했다. exact HEAD hosted Checks는 테스트·보안·coverage가 + 통과했지만 OpenCode는 실패, Strix와 Devin은 pending이며 qualifying approval도 없다. +- #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 + `03cdf855fdf135ac2cd535e8fc76421c7cb32bf8`. 모바일에서 cloud 로그인 영역이 + 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· + skip link·overflow와 seed/empty screenshot을 실제 Playwright로 점검한다. 최초 + cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정했고 현재 HEAD + 로컬 2-worker 전체 E2E는 96개가 통과했다. replacement cloud-E2E·unit/API·보안 + Checks는 queued이며 Devin은 pending, qualifying approval은 없다. +- #625: `develop@2c328875` 대상 + `baf4b6365014d36a853a25aa7e743d1bf2e417a8`. 이 문서의 기준선 갱신 제출본이며 + exact HEAD의 unit·API·coverage·보안·cloud E2E·Strix·Devin Checks는 통과했지만 + OpenCode check가 실패하고 qualifying approval이 없어 병합하지 않았다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From de7fb2697528ad3f9978a51556291ea787131974 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 02:30:39 +0900 Subject: [PATCH 038/115] docs: align baseline gate status --- docs/product-technical-gap-baseline.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index a8428ceb..e301d132 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `03cdf855`가 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621/#625 OpenCode current-head check 실패; #621 Strix·Devin pending; #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks queued; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix pending; #625는 문서 push 후 replacement Checks queued (이전 OpenCode 실패는 current-head verdict 부재); #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -107,10 +107,10 @@ HEAD가 바뀌면 다시 확인해야 한다. cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정했고 현재 HEAD 로컬 2-worker 전체 E2E는 96개가 통과했다. replacement cloud-E2E·unit/API·보안 Checks는 queued이며 Devin은 pending, qualifying approval은 없다. -- #625: `develop@2c328875` 대상 - `baf4b6365014d36a853a25aa7e743d1bf2e417a8`. 이 문서의 기준선 갱신 제출본이며 - exact HEAD의 unit·API·coverage·보안·cloud E2E·Strix·Devin Checks는 통과했지만 - OpenCode check가 실패하고 qualifying approval이 없어 병합하지 않았다. +- #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 + replacement Checks가 queued 상태다. 이전 exact head에서는 unit·API·coverage· + 보안·cloud E2E·Strix·Devin Checks가 통과했지만 OpenCode check가 current-head + verdict 부재로 실패했고 qualifying approval도 없었다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From 2b51cb08dc782da4743ccbe2d8918241c1fe5815 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 02:32:32 +0900 Subject: [PATCH 039/115] docs: classify provider-gated review failures --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e301d132..61bf894a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `03cdf855`가 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix pending; #625는 문서 push 후 replacement Checks queued (이전 OpenCode 실패는 current-head verdict 부재); #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix provider HTTP 500/no-report fail-closed; #625는 문서 push 후 replacement Checks queued (이전 OpenCode 실패는 current-head verdict 부재); #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -98,8 +98,10 @@ HEAD가 바뀌면 다시 확인해야 한다. `3aaf9b72e4b794c78b13b106692d4845243cc87a`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스한다. 현재 부모 기준 local 전체 E2E - 95개와 unit/API가 통과했다. exact HEAD hosted Checks는 테스트·보안·coverage가 - 통과했지만 OpenCode는 실패, Strix와 Devin은 pending이며 qualifying approval도 없다. + 95개와 unit/API가 통과했다. exact HEAD hosted 테스트·보안·coverage는 통과했지만 + OpenCode는 current-head verdict 부재로 실패했고 Strix는 provider HTTP 500과 + vulnerability report 부재로 fail-closed 되었다. Devin은 통과했지만 qualifying + approval은 없다. - #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 `03cdf855fdf135ac2cd535e8fc76421c7cb32bf8`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· From 2ff7e4c404330986f274ec5b4411644472be87b9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 02:37:42 +0900 Subject: [PATCH 040/115] docs: record verified pages deployment --- docs/product-technical-gap-baseline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 61bf894a..cdc373ac 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -32,7 +32,7 @@ | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | | 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `3aaf9b7` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | | 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `3aaf9b7` 제출본 | 제출됨, 병합 대기 | -| 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html` | 구현 완료, 실제 출판 증거 필요 | +| 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html`; GitHub Pages 성공 배포 `develop@2c328875`와 공개 응답 확인 (`https://contextualwisdomlab.github.io/scopeweave/`) | 완료 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | ## 3. UML 및 데이터 흐름 From 4c3563c543e14ba561b7084209f13817d1fe5916 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 02:45:35 +0900 Subject: [PATCH 041/115] docs: record resolved accessibility review --- docs/product-technical-gap-baseline.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index cdc373ac..e0b569e7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -89,8 +89,8 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `4c8d09d`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | -| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `03cdf855`가 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix provider HTTP 500/no-report fail-closed; #625는 문서 push 후 replacement Checks queued (이전 OpenCode 실패는 current-head verdict 부재); #629의 최초 cloud-E2E 경쟁 조건은 `03cdf855`에서 보완되어 replacement Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix provider HTTP 500/no-report fail-closed; #625는 최신 문서 push 후 replacement Checks 재실행; #629는 최신 접근성 수정 후 replacement Checks 재실행 중; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -103,12 +103,13 @@ HEAD가 바뀌면 다시 확인해야 한다. vulnerability report 부재로 fail-closed 되었다. Devin은 통과했지만 qualifying approval은 없다. - #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 - `03cdf855fdf135ac2cd535e8fc76421c7cb32bf8`. 모바일에서 cloud 로그인 영역이 + `3c82b48da698c42337a21016af785bcf46d1a975`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· skip link·overflow와 seed/empty screenshot을 실제 Playwright로 점검한다. 최초 - cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정했고 현재 HEAD - 로컬 2-worker 전체 E2E는 96개가 통과했다. replacement cloud-E2E·unit/API·보안 - Checks는 queued이며 Devin은 pending, qualifying approval은 없다. + cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 + 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD 로컬 2-worker 전체 + E2E는 96개가 통과했고 Devin current-head 리뷰는 해결로 기록됐다. replacement + cloud-E2E·unit/API·보안 Checks는 재실행 중이며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 replacement Checks가 queued 상태다. 이전 exact head에서는 unit·API·coverage· 보안·cloud E2E·Strix·Devin Checks가 통과했지만 OpenCode check가 current-head From f65bf544e0536af8dc0fbf4005acf74d6c3d73ea Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 03:13:21 +0900 Subject: [PATCH 042/115] docs: refresh exact-head queue evidence --- docs/product-technical-gap-baseline.md | 32 ++++++++++++++------------ 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e0b569e7..e237227a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -86,34 +86,36 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `4c8d09d`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `4c8d09d`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | -| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `ec5a34c0`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `ec5a34c0`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `ec5a34c0`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 OpenCode current-head check 실패 및 Strix provider HTTP 500/no-report fail-closed; #625는 최신 문서 push 후 replacement Checks 재실행; #629는 최신 접근성 수정 후 replacement Checks 재실행 중; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `ec5a34c0`은 OpenCode 실패와 cloud/Strix/Noema 등 hosted Checks 진행 중; #625 `4c3563c5`는 OpenCode 실패 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `3aaf9b72e4b794c78b13b106692d4845243cc87a`. CSV 성공 import 시 stale 검색어를 + `ec5a34c0efa024454752483aa16b5f868ac38798`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, - 빠른 검색 입력의 전체 재렌더를 디바운스한다. 현재 부모 기준 local 전체 E2E - 95개와 unit/API가 통과했다. exact HEAD hosted 테스트·보안·coverage는 통과했지만 - OpenCode는 current-head verdict 부재로 실패했고 Strix는 provider HTTP 500과 - vulnerability report 부재로 fail-closed 되었다. Devin은 통과했지만 qualifying - approval은 없다. + 빠른 검색 입력의 전체 재렌더를 디바운스한다. 프로젝트 선택 후 인라인 변경이 + autosave되도록 cloud cache adapter를 서버 정적 허용목록에도 등록했다. 현재 HEAD의 + local 전체 E2E 96개, unit, API, fuzz, workflow 설정 테스트가 통과했다. hosted + Checks는 unit/API·coverage·다수 보안 검사가 통과했지만 cloud-E2E·Strix·Noema·일부 + 분석/SCA가 진행 중이고 OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD + qualifying approval은 없다. - #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 `3c82b48da698c42337a21016af785bcf46d1a975`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· skip link·overflow와 seed/empty screenshot을 실제 Playwright로 점검한다. 최초 cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD 로컬 2-worker 전체 - E2E는 96개가 통과했고 Devin current-head 리뷰는 해결로 기록됐다. replacement - cloud-E2E·unit/API·보안 Checks는 재실행 중이며 qualifying approval은 없다. + E2E는 96개가 통과했고 Devin current-head 리뷰는 해결로 기록됐다. hosted + unit/API·OSV·dependency review는 통과했지만 cloud-E2E가 실패했으며 qualifying + approval은 없다. - #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 - replacement Checks가 queued 상태다. 이전 exact head에서는 unit·API·coverage· - 보안·cloud E2E·Strix·Devin Checks가 통과했지만 OpenCode check가 current-head - verdict 부재로 실패했고 qualifying approval도 없었다. + `4c3563c543e14ba561b7084209f13817d1fe5916` 기준 주요 unit·API·coverage·보안· + cloud E2E·Strix Checks는 통과했지만 OpenCode check가 current-head verdict 부재로 + 실패했고 qualifying approval도 없었다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From bc938989d9224ecc0ba3b23a0876ca2d8b272536 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 03:30:54 +0900 Subject: [PATCH 043/115] docs: repair baseline queue references --- docs/product-technical-gap-baseline.md | 34 +++++++++++--------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e237227a..0f6d4f53 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,11 +27,11 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `3aaf9b7` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `cc180453` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `3aaf9b7` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | -| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `3aaf9b7` 제출본 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `cc180453` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `cc180453` 제출본 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html`; GitHub Pages 성공 배포 `develop@2c328875`와 공개 응답 확인 (`https://contextualwisdomlab.github.io/scopeweave/`) | 완료 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -86,23 +86,23 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `ec5a34c0`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `ec5a34c0`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | -| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `ec5a34c0`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `cc180453`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `cc180453`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `cc180453`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `ec5a34c0`은 OpenCode 실패와 cloud/Strix/Noema 등 hosted Checks 진행 중; #625 `4c3563c5`는 OpenCode 실패 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `cc180453`은 OpenCode 실패, Strix 진행 중, 나머지 주요 hosted Checks 통과; #625 `f65bf544`는 OpenCode 실패 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `ec5a34c0efa024454752483aa16b5f868ac38798`. CSV 성공 import 시 stale 검색어를 + `cc1804538568d3e4cb3524dfce9bdb5796a8052a`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스한다. 프로젝트 선택 후 인라인 변경이 autosave되도록 cloud cache adapter를 서버 정적 허용목록에도 등록했다. 현재 HEAD의 - local 전체 E2E 96개, unit, API, fuzz, workflow 설정 테스트가 통과했다. hosted - Checks는 unit/API·coverage·다수 보안 검사가 통과했지만 cloud-E2E·Strix·Noema·일부 - 분석/SCA가 진행 중이고 OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD - qualifying approval은 없다. + local 전체 E2E 97개, unit, API, fuzz, workflow 설정 테스트가 통과했다. hosted + unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 + 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 진행 중이며 OpenCode는 + current-head verdict 부재로 실패했다. 현재 HEAD qualifying approval은 없다. - #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 `3c82b48da698c42337a21016af785bcf46d1a975`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· @@ -113,7 +113,7 @@ HEAD가 바뀌면 다시 확인해야 한다. unit/API·OSV·dependency review는 통과했지만 cloud-E2E가 실패했으며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 - `4c3563c543e14ba561b7084209f13817d1fe5916` 기준 주요 unit·API·coverage·보안· + `f65bf544e0536af8dc0fbf4005acf74d6c3d73ea` 기준 주요 unit·API·coverage·보안· cloud E2E·Strix Checks는 통과했지만 OpenCode check가 current-head verdict 부재로 실패했고 qualifying approval도 없었다. - #509: `develop@2c328875` 대상 @@ -318,7 +318,7 @@ HEAD가 바뀌면 다시 확인해야 한다. Strix artifact는 `invalid_tools` 400으로 중단되어 authoritative clean verdict가 없고, qualifying approval도 없어 병합하지 않았다. - #601: `develop@2c328875` 대상 - `98f4354733c68c9f361e516f86ba2d95e97af20`. 날짜 formatter의 native-compatible + `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter의 native-compatible zero-padding과 benchmark checksum fail-closed 수정을 current CodeGraph·리뷰와 대조했다. unit·API·coverage는 통과했고 전체 E2E는 78/79 통과(유일한 실패는 기존 `modulepreload` 기대)했으며, Strix는 NVIDIA 429/OpenAI 404 provider @@ -334,12 +334,6 @@ HEAD가 바뀌면 다시 확인해야 한다. 추가했고 단독 E2E 75개가 통과했다. 현재 base의 modulepreload 누락으로 기존 static E2E 1개가 실패하며, OpenCode current-head verdict 부재와 qualifying approval 없음으로 병합하지 않았다. -- #495: `develop@2c328875` 대상 `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. - 정적 shell의 `cloud-sync.js`·`analytics.js` modulepreload를 제공하는 - 제출본이다. #628에서 확인한 기존 E2E 실패의 별도 소유 경로이며, OpenCode/ - Strix 게이트와 qualifying approval을 재확인해야 한다. 로컬 5,000행 - production benchmark는 180초 제한에서 interaction probe가 종료되지 않아 - hosted 성능 증거로 대체하지 않았다. - #626: `d0141077d3bb790786520efa3d115d4dd2ce70bf`는 #508의 `computeTaskMetrics` 최적화와 중복되어 종료했다. #627: `c91715a4ad4f8865e7e6a90ffc51fdb8b16fd360`은 문자열 필터만으로는 From c881fbbac0998c65cba4ccabea815a6aa3b49781 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 03:43:17 +0900 Subject: [PATCH 044/115] docs: refresh current queue evidence --- docs/product-technical-gap-baseline.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0f6d4f53..4e2027a2 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,11 +27,11 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `cc180453` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `acb94c12` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `cc180453` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | -| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `cc180453` 제출본 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `acb94c12` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `acb94c12` 제출본 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html`; GitHub Pages 성공 배포 `develop@2c328875`와 공개 응답 확인 (`https://contextualwisdomlab.github.io/scopeweave/`) | 완료 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -86,22 +86,24 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `cc180453`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `cc180453`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | -| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `cc180453`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `acb94c12`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `acb94c12`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `acb94c12`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `cc180453`은 OpenCode 실패, Strix 진행 중, 나머지 주요 hosted Checks 통과; #625 `f65bf544`는 OpenCode 실패 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `acb94c12`은 OpenCode 실패와 Strix pending, 나머지 주요 hosted Checks 통과; #625 `bc938989`는 OpenCode 실패와 Strix 진행 중 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `cc1804538568d3e4cb3524dfce9bdb5796a8052a`. CSV 성공 import 시 stale 검색어를 + `acb94c12b0419bf1166b106a4bb0e95957c28a6c`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스한다. 프로젝트 선택 후 인라인 변경이 autosave되도록 cloud cache adapter를 서버 정적 허용목록에도 등록했다. 현재 HEAD의 - local 전체 E2E 97개, unit, API, fuzz, workflow 설정 테스트가 통과했다. hosted + local 전체 E2E 98개, unit, API, fuzz, workflow 설정 테스트가 통과했다. 저장소 + snapshot이 사라져도 interactive 저장이 cloud/file sync까지 계속되도록 메모리 adoption + flag와 회귀 테스트를 추가했다. hosted unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 - 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 진행 중이며 OpenCode는 + 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 pending이며 OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD qualifying approval은 없다. - #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 `3c82b48da698c42337a21016af785bcf46d1a975`. 모바일에서 cloud 로그인 영역이 @@ -113,8 +115,8 @@ HEAD가 바뀌면 다시 확인해야 한다. unit/API·OSV·dependency review는 통과했지만 cloud-E2E가 실패했으며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 - `f65bf544e0536af8dc0fbf4005acf74d6c3d73ea` 기준 주요 unit·API·coverage·보안· - cloud E2E·Strix Checks는 통과했지만 OpenCode check가 current-head verdict 부재로 + `bc938989d9224ecc0ba3b23a0876ca2d8b272536` 기준 주요 unit·API·coverage·보안· + cloud E2E Checks는 통과했지만 Strix는 진행 중이고 OpenCode check가 current-head verdict 부재로 실패했고 qualifying approval도 없었다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 From 9070adbce35a8c201c9e187dadcf19c3a6f27839 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 03:54:41 +0900 Subject: [PATCH 045/115] docs: track sample onboarding fix --- docs/product-technical-gap-baseline.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 4e2027a2..2a10cae6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -27,11 +27,11 @@ | --- | --- | --- | | 3단계 WBS 편집·계층 보존 | `app.js`의 단일 `state.tasks`, `renderAll()`, expand/collapse·subtree 이동 | 완료 | | 계획/실적 진척 및 일정 통제 | `analytics.js`의 EVM, S-curve, CPM, workload | 완료 | -| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `acb94c12` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 작업 검색과 계층 맥락 유지 | 현재 `develop`에는 미포함. #621의 `5c6c2530` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | | CSV 왕복 | `exportCsv()`, CSV parser/validation, E2E·fuzz 계약 | 완료 | | JSON seed·localStorage·선택적 파일 sync | `loadSeedTasks()`, `localStorage`, `exportJsonArray()`, File System Access API | 완료 | -| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `acb94c12` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | -| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `acb94c12` 제출본 | 제출됨, 병합 대기 | +| 명시적 JSON 다운로드 | 현재 `develop` UI에는 없음. #621의 `5c6c2530` 현재 제출본에 구현됨 | 제출됨, 병합 대기 | +| 첫 방문 샘플 안내와 빈 계획 전환 | 현재 `develop`에는 미포함. #624 변경이 포함된 #621 `5c6c2530` 제출본 | 제출됨, 병합 대기 | | 정적 배포 | `pages.yml`, 상대 경로 자산, `404.html`; GitHub Pages 성공 배포 `develop@2c328875`와 공개 응답 확인 (`https://contextualwisdomlab.github.io/scopeweave/`) | 완료 | | Cloud 인증·멀티테넌시·협업 | `server/`, `cloud-sync.js`, API smoke/E2E | 코드·테스트 존재, 운영 환경 검증 필요 | @@ -86,22 +86,23 @@ HEAD가 바뀌면 다시 확인해야 한다. | ID | Gap / 고객 영향 | 현재 제출 상태 | 조치 | | --- | --- | --- | --- | -| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `acb94c12`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | -| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `acb94c12`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | -| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `acb94c12`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | +| G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `5c6c2530`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | +| G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | +| G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `acb94c12`은 OpenCode 실패와 Strix pending, 나머지 주요 hosted Checks 통과; #625 `bc938989`는 OpenCode 실패와 Strix 진행 중 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 새 hosted run 진행 중; #625 `c881fbba`는 OpenCode 실패와 Strix pending 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence - #621: `develop@2c328875` 대상 - `acb94c12b0419bf1166b106a4bb0e95957c28a6c`. CSV 성공 import 시 stale 검색어를 + `5c6c2530454b982a7f765cb317d6ef3fd16930cf`. CSV 성공 import 시 stale 검색어를 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스한다. 프로젝트 선택 후 인라인 변경이 autosave되도록 cloud cache adapter를 서버 정적 허용목록에도 등록했다. 현재 HEAD의 - local 전체 E2E 98개, unit, API, fuzz, workflow 설정 테스트가 통과했다. 저장소 + local 전체 E2E 99개, unit, API, fuzz, workflow 설정 테스트가 통과했다. 저장소 snapshot이 사라져도 interactive 저장이 cloud/file sync까지 계속되도록 메모리 adoption - flag와 회귀 테스트를 추가했다. hosted + flag와 회귀 테스트를 추가했고, sample cloud onboarding도 프로젝트 생성 즉시 같은 + hydrate 경로로 adoption되도록 보강했다. hosted unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 pending이며 OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD qualifying approval은 없다. From 24d45a560b412f2a441600afcce8c72c25023d73 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 04:05:28 +0900 Subject: [PATCH 046/115] docs: refresh stacked PR heads --- docs/product-technical-gap-baseline.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 2a10cae6..9e97e939 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -89,8 +89,8 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-01 | 큰 WBS에서 작업 위치를 찾는 비용 | #621 `5c6c2530`, `develop` 병합 대기 | 작업·담당자·산출물 등 필드 검색과 상위 계층 표시 | | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | -| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `3c82b48`이 #621 `3aaf9b7` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 새 hosted run 진행 중; #625 `c881fbba`는 OpenCode 실패와 Strix pending 외 주요 Checks 통과; #629 `3c82b48d`는 cloud-E2E 실패; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix 진행 중·OpenCode 실패; #625 `9070adbc`는 Strix pending·OpenCode 실패 외 주요 Checks 통과; #629 `89fff38b`는 seed-load race 수정 후 hosted Checks 재실행 중; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -104,20 +104,20 @@ HEAD가 바뀌면 다시 확인해야 한다. flag와 회귀 테스트를 추가했고, sample cloud onboarding도 프로젝트 생성 즉시 같은 hydrate 경로로 adoption되도록 보강했다. hosted unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 - 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 pending이며 OpenCode는 + 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 진행 중이며 OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD qualifying approval은 없다. -- #629: stacked base `feat/wbs-search-context@3aaf9b72` 대상 - `3c82b48da698c42337a21016af785bcf46d1a975`. 모바일에서 cloud 로그인 영역이 +- #629: stacked base `feat/wbs-search-context@5c6c2530` 대상 + `89fff38b54169d0582af43aee2deea13da6684bb`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· skip link·overflow와 seed/empty screenshot을 실제 Playwright로 점검한다. 최초 cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 - 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD 로컬 2-worker 전체 - E2E는 96개가 통과했고 Devin current-head 리뷰는 해결로 기록됐다. hosted - unit/API·OSV·dependency review는 통과했지만 cloud-E2E가 실패했으며 qualifying - approval은 없다. + 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD의 seed-load race는 + empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 + 통과했고, hosted Checks는 새 head에서 재실행 중이다. hosted + unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 - `bc938989d9224ecc0ba3b23a0876ca2d8b272536` 기준 주요 unit·API·coverage·보안· - cloud E2E Checks는 통과했지만 Strix는 진행 중이고 OpenCode check가 current-head verdict 부재로 + `9070adbce35a8c201c9e187dadcf19c3a6f27839` 기준 주요 unit·API·coverage·보안· + cloud E2E Checks는 통과했지만 Strix는 pending이고 OpenCode check가 current-head verdict 부재로 실패했고 qualifying approval도 없었다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 From 7f6ab68c3ea9b86db5984bd8f481e19d84a1277f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 04:08:50 +0900 Subject: [PATCH 047/115] docs: record hosted gate outcomes --- docs/product-technical-gap-baseline.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 9e97e939..366407b3 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix 진행 중·OpenCode 실패; #625 `9070adbc`는 Strix pending·OpenCode 실패 외 주요 Checks 통과; #629 `89fff38b`는 seed-load race 수정 후 hosted Checks 재실행 중; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 기준선 PR의 최신 제출본은 hosted Checks 재실행 중; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -104,8 +104,10 @@ HEAD가 바뀌면 다시 확인해야 한다. flag와 회귀 테스트를 추가했고, sample cloud onboarding도 프로젝트 생성 즉시 같은 hydrate 경로로 adoption되도록 보강했다. hosted unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 - 통과했고 Scorecard/OSV scanner는 neutral이다. Strix는 진행 중이며 OpenCode는 - current-head verdict 부재로 실패했다. 현재 HEAD qualifying approval은 없다. + 통과했고 Scorecard/OSV scanner는 neutral이다. Strix run `33201343269`는 + contextual-orchestrator HTTP 500 provider failure를 세 차례 재시도한 뒤 report 없이 + fail-closed되었고, OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD + qualifying approval은 없다. - #629: stacked base `feat/wbs-search-context@5c6c2530` 대상 `89fff38b54169d0582af43aee2deea13da6684bb`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· @@ -113,12 +115,11 @@ HEAD가 바뀌면 다시 확인해야 한다. cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD의 seed-load race는 empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 - 통과했고, hosted Checks는 새 head에서 재실행 중이다. hosted + 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. -- #625: `develop@2c328875` 대상. 이 문서의 기준선 갱신 제출본이며, 최신 push 후 - `9070adbce35a8c201c9e187dadcf19c3a6f27839` 기준 주요 unit·API·coverage·보안· - cloud E2E Checks는 통과했지만 Strix는 pending이고 OpenCode check가 current-head verdict 부재로 - 실패했고 qualifying approval도 없었다. +- #625: `develop@2c328875` 대상. 직전 기준선 제출본 + `24d45a560b412f2a441600afcce8c72c25023d73`에서 주요 hosted Checks가 재실행 중이며, + qualifying approval은 없다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From d17c7a7e018f77584ccfd5c351d060b2bb602be6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 04:31:47 +0900 Subject: [PATCH 048/115] docs: record current pr 608 evidence --- docs/product-technical-gap-baseline.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 366407b3..0e9c4b3d 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -156,11 +156,14 @@ HEAD가 바뀌면 다시 확인해야 한다. `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 `task.predecessors || ''` 및 `task.sprint || ''`로 수정했다. 현재 head의 replacement Checks는 재실행 중이며, qualifying approval은 없다. -- #608: `83b8949157e0bb6cd9a8b967c807e9238ddac943` (base +- #608: `e48f3f64edda51f0bcdd3ac279d2ecf14c6b0160` (base `develop@2c328875`). 빈 상태 도움말의 DOM `hidden` 상태를 `renderAll()`의 작업 존재 여부와 동기화하고, 제거된 tooltip을 기대하던 기존 E2E를 - `disabled`·`aria-describedby`·지속 설명 계약으로 갱신했다. focused E2E와 - unit은 통과했으며, 현재 head의 hosted Checks는 재실행 중이고 승인은 없다. + `disabled`·`aria-describedby`·지속 설명 계약으로 갱신했다. async bootstrap + 중 빈 프로젝트 작업이 잠시 활성화되는 경계도 초기 HTML의 동일한 disabled + 상태로 닫았고, cloud/analytics modulepreload 계약을 복원했다. 현재 HEAD의 + 로컬 전체 E2E 79개와 unit이 통과했으며, hosted Checks는 재실행 중이고 + qualifying approval은 없다. - #587: `1f93371c9df84a2f60dd3386c6429d63d750c50c` (base `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, From c01786e39c91fd29b331dfea83d82d473a5fedd9 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 04:48:32 +0900 Subject: [PATCH 049/115] docs: refresh trusted proxy current-head evidence --- docs/product-technical-gap-baseline.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0e9c4b3d..ff6b7c92 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -164,12 +164,15 @@ HEAD가 바뀌면 다시 확인해야 한다. 상태로 닫았고, cloud/analytics modulepreload 계약을 복원했다. 현재 HEAD의 로컬 전체 E2E 79개와 unit이 통과했으며, hosted Checks는 재실행 중이고 qualifying approval은 없다. -- #587: `1f93371c9df84a2f60dd3386c6429d63d750c50c` (base +- #587: `dcf37e81f8a5584accc4403e05b3a5e10b644872` (base `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, `server/rate_limit.mjs`의 설정 검증·trusted transport peer·bucket 상한을 - 공유하도록 했다. direct-core rate-limit, 전체 coverage/API는 로컬 통과했으며, - replacement hosted Checks는 queued이고 qualifying approval은 없다. + 공유하도록 했다. 후속 보안 감사에서 ordinary/429 request logger의 invite/share + bearer path leak을 확인해 공통 redaction과 실제 파일-DB 회귀를 추가했다. + direct-core rate-limit, 전체 coverage/API와 redaction 회귀는 로컬 통과했으며, + current-head hosted Checks에는 OpenCode failure가 있고 qualifying approval은 + 없다. - #596: `develop@2c328875` 대상 `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator unit·coverage· From 184ead3fffed14f7b977b4fced327f2c3b5385f5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:01:05 +0900 Subject: [PATCH 050/115] docs: refresh empty-state current-head evidence --- docs/product-technical-gap-baseline.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ff6b7c92..3c028211 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -156,14 +156,13 @@ HEAD가 바뀌면 다시 확인해야 한다. `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 `task.predecessors || ''` 및 `task.sprint || ''`로 수정했다. 현재 head의 replacement Checks는 재실행 중이며, qualifying approval은 없다. -- #608: `e48f3f64edda51f0bcdd3ac279d2ecf14c6b0160` (base - `develop@2c328875`). 빈 상태 도움말의 DOM `hidden` 상태를 `renderAll()`의 - 작업 존재 여부와 동기화하고, 제거된 tooltip을 기대하던 기존 E2E를 - `disabled`·`aria-describedby`·지속 설명 계약으로 갱신했다. async bootstrap - 중 빈 프로젝트 작업이 잠시 활성화되는 경계도 초기 HTML의 동일한 disabled - 상태로 닫았고, cloud/analytics modulepreload 계약을 복원했다. 현재 HEAD의 - 로컬 전체 E2E 79개와 unit이 통과했으며, hosted Checks는 재실행 중이고 - qualifying approval은 없다. +- #608: `2d7448cbb27f2580dacdbc2b4813efd8c99b08af` (base + `develop@2c328875`). 동시 변경으로 제거됐던 cloud/analytics modulepreload와 + 초기 task-dependent native `disabled`·`aria-describedby` 상태를 복원하고, + 제거된 tooltip 기대를 `disabled`·description·visible helper·live-region + 계약으로 갱신했다. predecessor에서 재현된 local E2E 2건을 current tree에서 + 먼저 확인한 뒤 전체 Playwright 79개와 accessibility unit이 통과했다. current + HEAD hosted Checks는 재실행 중이고 qualifying approval은 없다. - #587: `dcf37e81f8a5584accc4403e05b3a5e10b644872` (base `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, From 2fd8e475c713c04226cf38a7cd7cea43e6455b9f Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:26:56 +0900 Subject: [PATCH 051/115] docs: record current PR 490 validation --- docs/product-technical-gap-baseline.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3c028211..d39347da 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -145,12 +145,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 테스트 게이트는 통과했다. Strix artifact는 0 findings를 기록했지만 후속 provider 장애로 gate가 fail-closed 되었고 qualifying approval도 없다. - #490: `develop@2c328875` 대상 - `10bd1f3cedb1898fd3a50c4ab84161d7fd9b232e`. editor invoker의 stable ID/action/ + `2888a5ba776c6c8943278bb7e35f070aebf964da`. editor invoker의 stable ID/action/ task identity 기록, rerender 이후 allowlisted control 복원과 selector-hostile - persisted ID 방어를 current CodeGraph·resolved 리뷰와 대조했다. focused - focus E2E 9개와 editor unit은 통과했고, hosted OpenCode·보안·테스트 게이트는 - 통과했다. Strix는 SARIF 0 findings 뒤 provider infrastructure failure로 - fail-closed 되었으며 qualifying approval도 없어 병합하지 않았다. + persisted ID 방어를 current CodeGraph·resolved 리뷰와 대조했다. modulepreload + 선언 누락으로 재현된 static E2E 회귀를 `cloud-sync.js`·`analytics.js` 선언 + 복원으로 수정했고, unit 및 전체 Playwright 85개가 통과했다. current-head + replacement Checks는 실행 중이며 qualifying approval이 없어 병합하지 않았다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 59a82f54853989b69245a1183f27dba507f57285 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:32:33 +0900 Subject: [PATCH 052/115] docs: refresh performance PR evidence --- docs/product-technical-gap-baseline.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d39347da..88372e57 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -128,9 +128,10 @@ HEAD가 바뀌면 다시 확인해야 한다. - #508: `develop@2c328875` 대상 `642034faf5c97ca8730a70ef89edf6f4fdd54840`. `computeTaskMetrics`의 duration cache를 `Int32Array`와 명시적 loop로 바꾼 제출본으로 benchmark-base - unit 16개와 hosted unit·API·cloud E2E는 통과했다. OpenCode는 current-head - verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 - fail-closed 되었고 `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. + unit 16개와 protected-base/candidate를 고정한 local benchmark가 통과했다 + (semantic digest 동일, local median 개선 5.93%). current-head hosted required + Checks와 OpenCode·Strix는 terminal success이며 `REVIEW_REQUIRED`/qualifying + approval 부재로 병합하지 않았다. - #495: `develop@2c328875` 대상 `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. metadata-only render 경계, owner/status DOM shell 재사용, row identity 보존과 badge contrast 회귀를 From 6c4c734303e962a3a3429cbd80b080f79bf22d22 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:36:22 +0900 Subject: [PATCH 053/115] docs: record modal performance validation --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 88372e57..8766e5d7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -186,9 +186,11 @@ HEAD가 바뀌면 다시 확인해야 한다. Devin은 결함을 보고하지 않았지만 qualifying approval이 없어 병합하지 않았다. - #578: `e9575ee404ae9c725d009833639f12a0d890df9e` (base `develop@2c328875`). 첨부·코멘트 모달의 task label lookup을 한 번의 Map - 구성으로 바꾸고 2,000-task/40-comment 브라우저 회귀를 통과했다. 현재 - hosted Strix는 provider/backend unavailable로 authoritative report를 - 만들지 못했고 qualifying approval도 없어 병합하지 않았다. + 구성으로 바꾸고 duplicate/legacy label unit과 2,000-task/40-comment + 브라우저 회귀(large-array scan 0회)를 통과했다. current-head hosted + required Checks는 통과했지만, Strix run `33004555408`은 `orchestrator/free` + provider 미설정으로 실패했고 artifact에도 vulnerability report가 없어 + fail-closed 되었으며 qualifying approval도 없어 병합하지 않았다. - #623: stacked base `refactor/schema-migration-ledger-433@9f2e6818` 대상 `81072df8f4dd2e2df269710eb7cc852312ff7543`, draft 상태. canonical SQLite rename의 31개 schema/migration 테스트는 통과했지만 독립 병합 근거가 없다. From 15b2cd5674b8f8c7b10c1c0425b6040e1991e2a4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:40:18 +0900 Subject: [PATCH 054/115] docs: reconcile focus PR gate evidence --- docs/product-technical-gap-baseline.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 8766e5d7..812a6e18 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -151,7 +151,9 @@ HEAD가 바뀌면 다시 확인해야 한다. persisted ID 방어를 current CodeGraph·resolved 리뷰와 대조했다. modulepreload 선언 누락으로 재현된 static E2E 회귀를 `cloud-sync.js`·`analytics.js` 선언 복원으로 수정했고, unit 및 전체 Playwright 85개가 통과했다. current-head - replacement Checks는 실행 중이며 qualifying approval이 없어 병합하지 않았다. + functional/security Checks는 통과했지만 OpenCode는 verdict 부재로, Strix는 + provider HTTP 500과 vulnerability report 부재로 fail-closed 되었으며 + qualifying approval이 없어 병합하지 않았다. - #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 From 01e0ae8454e323d2d3fb674069bd0e1548cd9f76 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:42:45 +0900 Subject: [PATCH 055/115] docs: pin baseline queue snapshot --- docs/product-technical-gap-baseline.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 812a6e18..4f7441d6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -117,9 +117,9 @@ HEAD가 바뀌면 다시 확인해야 한다. empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. -- #625: `develop@2c328875` 대상. 직전 기준선 제출본 - `24d45a560b412f2a441600afcce8c72c25023d73`에서 주요 hosted Checks가 재실행 중이며, - qualifying approval은 없다. +- #625: `develop@2c328875` 대상. 직전 docs-only 기준선 제출본 + `15b2cd5674b8f8c7b10c1c0425b6040e1991e2a4`에서 주요 hosted Checks가 재실행 + 중이며, qualifying approval은 없다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From 420757897593e1c34281456103988a54f71f5d06 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:45:25 +0900 Subject: [PATCH 056/115] docs: record release manifest validation --- docs/product-technical-gap-baseline.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 4f7441d6..c44575b1 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -120,6 +120,14 @@ HEAD가 바뀌면 다시 확인해야 한다. - #625: `develop@2c328875` 대상. 직전 docs-only 기준선 제출본 `15b2cd5674b8f8c7b10c1c0425b6040e1991e2a4`에서 주요 hosted Checks가 재실행 중이며, qualifying approval은 없다. +- #616: `develop@2c328875` 대상 + `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact + manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 + pathname replacement 경계를 current CodeGraph와 대조했고 full release + unit suite가 통과했다. hosted required Checks는 통과했지만 Strix run + `33074284775`는 `openrouter/free` invalid-URL 502 뒤 OpenAI fallback 429/no + credits로 provider failure가 발생해 authoritative clean evidence가 없고, + qualifying approval도 없어 병합하지 않았다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. From 63548a8c456881658a90728c79188c0fa63bab8b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:53:43 +0900 Subject: [PATCH 057/115] docs: reconcile current PR evidence --- docs/product-technical-gap-baseline.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c44575b1..d37c8bc5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -162,11 +162,15 @@ HEAD가 바뀌면 다시 확인해야 한다. functional/security Checks는 통과했지만 OpenCode는 verdict 부재로, Strix는 provider HTTP 500과 vulnerability report 부재로 fail-closed 되었으며 qualifying approval이 없어 병합하지 않았다. -- #610: `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a` (base - `develop@2c328875`). 이전 exact head의 Cloud E2E가 JSON sync에서 텍스트 - `predecessors`/`sprint`의 `0`·`false`를 보존하는 결함을 검출했고, 이를 - `task.predecessors || ''` 및 `task.sprint || ''`로 수정했다. 현재 head의 - replacement Checks는 재실행 중이며, qualifying approval은 없다. +- #610: `develop@2c328875` 대상 + `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a`. numeric-zero 공통 정규화 경계와 + JSON/CSV export를 current CodeGraph와 대조했고 focused numeric-zero 12개, + 전체 unit 및 config 3개가 통과했다. 전체 Playwright는 88개 중 87개가 + 통과했으며 유일한 실패는 develop baseline의 modulepreload 누락(#490에서 + 별도 수정 중)이다. current-head hosted functional/security/fuzz/coverage + Checks는 통과했지만 OpenCode run `33180751297`/job `98980396931`은 + current-head verdict 부재로 fail-closed 되었고 qualifying approval도 없어 + 병합하지 않았다. - #608: `2d7448cbb27f2580dacdbc2b4813efd8c99b08af` (base `develop@2c328875`). 동시 변경으로 제거됐던 cloud/analytics modulepreload와 초기 task-dependent native `disabled`·`aria-describedby` 상태를 복원하고, @@ -202,8 +206,11 @@ HEAD가 바뀌면 다시 확인해야 한다. provider 미설정으로 실패했고 artifact에도 vulnerability report가 없어 fail-closed 되었으며 qualifying approval도 없어 병합하지 않았다. - #623: stacked base `refactor/schema-migration-ledger-433@9f2e6818` 대상 - `81072df8f4dd2e2df269710eb7cc852312ff7543`, draft 상태. canonical SQLite - rename의 31개 schema/migration 테스트는 통과했지만 독립 병합 근거가 없다. + `0e8f65a02fb77ea52481a6339a1f517f5389807a`, draft 상태. canonical SQLite + rename이 첫 ledger 생성까지 `BEGIN IMMEDIATE` 안에서 수행되도록 보강하고, + 중간 실패 시 ledger와 10개 table rename이 함께 rollback되는 회귀를 추가했다. + focused rename 12개와 전체 unit은 통과했으며 exact-head Server/OSV/Dependency + Checks는 아직 진행 중이고 qualifying approval은 없다. - #500: `develop@2c328875` 대상 `b7ef5c587aac52d03880b087af39580ff52384cc`. fail-closed schema migration ledger의 unknown-object, ledger-contract, compatibility-column 및 concurrent From a31225cd9ba7e688d3f82deca4c096aaaceba44c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:54:51 +0900 Subject: [PATCH 058/115] docs: close schema migration gate record --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d37c8bc5..73dc2af4 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -118,7 +118,7 @@ HEAD가 바뀌면 다시 확인해야 한다. 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 직전 docs-only 기준선 제출본 - `15b2cd5674b8f8c7b10c1c0425b6040e1991e2a4`에서 주요 hosted Checks가 재실행 + `63548a8c456881658a90728c79188c0fa63bab8b`에서 주요 hosted Checks가 재실행 중이며, qualifying approval은 없다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact @@ -209,8 +209,10 @@ HEAD가 바뀌면 다시 확인해야 한다. `0e8f65a02fb77ea52481a6339a1f517f5389807a`, draft 상태. canonical SQLite rename이 첫 ledger 생성까지 `BEGIN IMMEDIATE` 안에서 수행되도록 보강하고, 중간 실패 시 ledger와 10개 table rename이 함께 rollback되는 회귀를 추가했다. - focused rename 12개와 전체 unit은 통과했으며 exact-head Server/OSV/Dependency - Checks는 아직 진행 중이고 qualifying approval은 없다. + focused rename 12개와 전체 unit이 통과했으며 exact-head cloud-E2E·unit/API· + OSV·Dependency Checks도 terminal success로 수렴했다. 다만 parent가 아직 + 보호 병합되지 않은 stacked draft이고 qualifying approval이 없어 병합하지 + 않았다. - #500: `develop@2c328875` 대상 `b7ef5c587aac52d03880b087af39580ff52384cc`. fail-closed schema migration ledger의 unknown-object, ledger-contract, compatibility-column 및 concurrent From 4654627719b5a139fa99f7baec7337c746fae482 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 05:57:52 +0900 Subject: [PATCH 059/115] docs: record schedule reason evidence --- docs/product-technical-gap-baseline.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 73dc2af4..7eb6e1d8 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -213,6 +213,12 @@ HEAD가 바뀌면 다시 확인해야 한다. OSV·Dependency Checks도 terminal success로 수렴했다. 다만 parent가 아직 보호 병합되지 않은 stacked draft이고 qualifying approval이 없어 병합하지 않았다. +- #597: stacked base `feat/schedule-reason-project-version-287@22883d16` 대상 + `ae670764a54d451103e72c2453c74ff3f95c198f`, draft 상태. schedule terminal + reason route의 실제 SQLite version transition, JWT/PAT revocation, tenant + membership, SSE 및 webhook 경계를 API·전체 unit 테스트로 통과시켰고 exact-head + cloud-E2E·unit/API·OSV·Dependency Checks도 terminal success다. parent가 아직 + 보호 병합되지 않았고 qualifying approval이 없어 병합하지 않았다. - #500: `develop@2c328875` 대상 `b7ef5c587aac52d03880b087af39580ff52384cc`. fail-closed schema migration ledger의 unknown-object, ledger-contract, compatibility-column 및 concurrent From 28c2f9cd50f686a0e7428b60799b18ba8414ea41 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 06:03:12 +0900 Subject: [PATCH 060/115] docs: record protected gate outcomes --- docs/product-technical-gap-baseline.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 7eb6e1d8..205f246a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 기준선 PR의 최신 제출본은 hosted Checks 재실행 중; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 직전 exact `46546277`은 기능·보안 Checks 통과에도 OpenCode current-head verdict 부재와 Strix 취소·artifact 부재; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -118,8 +118,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. - #625: `develop@2c328875` 대상. 직전 docs-only 기준선 제출본 - `63548a8c456881658a90728c79188c0fa63bab8b`에서 주요 hosted Checks가 재실행 - 중이며, qualifying approval은 없다. + `4654627719b5a139fa99f7baec7337c746fae482`의 exact-head functional/security/ + coverage/unit Checks는 terminal success이고 Scorecard·Trivy·OSV scanner는 + neutral이다. OpenCode run `33210481457`/job `98982461472`는 current-head + verdict 부재로 fail-closed 되었고, Strix run `33210481495`는 cancelled되어 + job·artifact가 없으며 authoritative clean evidence가 없다. qualifying + approval도 없어 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 From a4ef0fccbf7be77b3bc9a076ea0dfdaa8a7b05a5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 06:19:02 +0900 Subject: [PATCH 061/115] docs: record empty-state hydration guard --- docs/product-technical-gap-baseline.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 205f246a..d85c6abd 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -175,13 +175,13 @@ HEAD가 바뀌면 다시 확인해야 한다. Checks는 통과했지만 OpenCode run `33180751297`/job `98980396931`은 current-head verdict 부재로 fail-closed 되었고 qualifying approval도 없어 병합하지 않았다. -- #608: `2d7448cbb27f2580dacdbc2b4813efd8c99b08af` (base - `develop@2c328875`). 동시 변경으로 제거됐던 cloud/analytics modulepreload와 - 초기 task-dependent native `disabled`·`aria-describedby` 상태를 복원하고, - 제거된 tooltip 기대를 `disabled`·description·visible helper·live-region - 계약으로 갱신했다. predecessor에서 재현된 local E2E 2건을 current tree에서 - 먼저 확인한 뒤 전체 Playwright 79개와 accessibility unit이 통과했다. current - HEAD hosted Checks는 재실행 중이고 qualifying approval은 없다. +- #608: `28a217891bba7c515b93755ba6593f476b6a9adc` (base + `develop@2c328875`). 빈 상태 task-dependent action의 정적 초기 markup에도 + native `disabled`, `aria-disabled`, `aria-describedby`를 설정해 seed/cloud + hydration 중 빈 CSV export와 빈 Gantt 진입 race를 fail-closed로 막았다. + focused accessibility E2E 4개, 관련 unit 6개, 전체 unit 및 config 3개가 + 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. + push 후 exact-head hosted Checks는 재실행 중이고 qualifying approval은 없다. - #587: `dcf37e81f8a5584accc4403e05b3a5e10b644872` (base `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, From c0c2b8489567a4c0f09dde2aef4dd6be4610b5f2 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 06:37:33 +0900 Subject: [PATCH 062/115] docs: refresh PR 587 gap evidence --- docs/product-technical-gap-baseline.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d85c6abd..3a234fa8 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -182,15 +182,17 @@ HEAD가 바뀌면 다시 확인해야 한다. focused accessibility E2E 4개, 관련 unit 6개, 전체 unit 및 config 3개가 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. push 후 exact-head hosted Checks는 재실행 중이고 qualifying approval은 없다. -- #587: `dcf37e81f8a5584accc4403e05b3a5e10b644872` (base - `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 - 오래된 첫 `x-forwarded-for` 기반 limiter를 사용하던 경계를 제거하고, - `server/rate_limit.mjs`의 설정 검증·trusted transport peer·bucket 상한을 - 공유하도록 했다. 후속 보안 감사에서 ordinary/429 request logger의 invite/share - bearer path leak을 확인해 공통 redaction과 실제 파일-DB 회귀를 추가했다. - direct-core rate-limit, 전체 coverage/API와 redaction 회귀는 로컬 통과했으며, - current-head hosted Checks에는 OpenCode failure가 있고 qualifying approval은 - 없다. +- #587: `c542615f3746ca365a51711e91ffec3477a5025e` (base + `develop@2c328875`). 직접 소비 가능한 + `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 + 사용하던 경계를 제거하고, `server/rate_limit.mjs`의 설정 검증·trusted + transport peer·bucket 상한을 공유하도록 했다. ordinary/429 request logger의 + invite/share bearer path leak은 공통 redaction으로 차단했고, OIDC guard + accounting probe와 대소문자 비구분 기존 계정 재사용을 보강했다. 배포 문서의 + `ORCHESTRATOR_TOKEN`과 contextual-orchestrator 설정 키 관계도 명확히 했다. + direct-core rate-limit, OIDC production boundary, 전체 API/unit 및 config 3개가 + 로컬 통과했으며, 문서 push 후 exact-head hosted Checks는 재실행 중이고 + qualifying approval은 없다. - #596: `develop@2c328875` 대상 `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator unit·coverage· From 099a2f0cea7e41573087c0fde1d70c4571ebadbb Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 06:54:07 +0900 Subject: [PATCH 063/115] docs: refresh exact-head queue evidence --- docs/product-technical-gap-baseline.md | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3a234fa8..3f76a2e6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -117,13 +117,12 @@ HEAD가 바뀌면 다시 확인해야 한다. empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. -- #625: `develop@2c328875` 대상. 직전 docs-only 기준선 제출본 - `4654627719b5a139fa99f7baec7337c746fae482`의 exact-head functional/security/ - coverage/unit Checks는 terminal success이고 Scorecard·Trivy·OSV scanner는 - neutral이다. OpenCode run `33210481457`/job `98982461472`는 current-head - verdict 부재로 fail-closed 되었고, Strix run `33210481495`는 cancelled되어 - job·artifact가 없으며 authoritative clean evidence가 없다. qualifying - approval도 없어 병합하지 않았다. +- #625: `develop@2c328875` 대상 `c0c2b8489567a4c0f09dde2aef4dd6be4610b5f2`. + 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 + 반영했다. exact-head functional/security/coverage/unit Checks는 terminal + success이고 Scorecard·Trivy·OSV scanner는 neutral이다. OpenCode는 현재 + head verdict 부재로 fail-closed 되었고 qualifying approval이 없어 병합하지 + 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 @@ -181,7 +180,8 @@ HEAD가 바뀌면 다시 확인해야 한다. hydration 중 빈 CSV export와 빈 Gantt 진입 race를 fail-closed로 막았다. focused accessibility E2E 4개, 관련 unit 6개, 전체 unit 및 config 3개가 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. - push 후 exact-head hosted Checks는 재실행 중이고 qualifying approval은 없다. + exact-head hosted functional/security Checks는 통과했지만 OpenCode는 현재 + head verdict 부재로 fail-closed 되었고 qualifying approval은 없다. - #587: `c542615f3746ca365a51711e91ffec3477a5025e` (base `develop@2c328875`). 직접 소비 가능한 `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 @@ -191,8 +191,9 @@ HEAD가 바뀌면 다시 확인해야 한다. accounting probe와 대소문자 비구분 기존 계정 재사용을 보강했다. 배포 문서의 `ORCHESTRATOR_TOKEN`과 contextual-orchestrator 설정 키 관계도 명확히 했다. direct-core rate-limit, OIDC production boundary, 전체 API/unit 및 config 3개가 - 로컬 통과했으며, 문서 push 후 exact-head hosted Checks는 재실행 중이고 - qualifying approval은 없다. + 로컬 통과했으며, exact-head hosted functional/security Checks는 통과했지만 + OpenCode는 current-head verdict 부재로 fail-closed 되었고 qualifying approval은 + 없다. - #596: `develop@2c328875` 대상 `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator unit·coverage· @@ -263,12 +264,15 @@ HEAD가 바뀌면 다시 확인해야 한다. security·cloud E2E Checks가 통과했지만 qualifying approval이 없어 병합하지 않았다. - #498: `fix/clearfolio-production-configuration@78f8b557` 대상 - `940858859b27060241864e633659f656907616b1`. 이전 hosted unit-and-api가 - persistence `TimeoutError` 회귀 테스트의 잘못된 `READY` fixture를 - `invalid_status`로 분류해 실패했다. 공유 분류 함수는 provider lookup - 단계에서만 native `TimeoutError`를 timeout으로 매핑하고, fixture는 유효한 - `SUCCEEDED`로 고쳤다. local coverage/unit/API는 통과했으며 replacement - Checks는 queued이고 qualifying approval은 없다. + `d7fae634706d4af8d94ae0b5201d0b539f81df84`. Clearfolio provider 응답의 + redirect·HMAC·JSON media type·UTF-8·256 KiB streamed byte ceiling과 + document/job-id validation, caller abort 조합, attachment timeout 분류를 + current CodeGraph와 대조했다. exact-head hosted unit-and-api·cloud-e2e· + dependency/OSV Checks와 local unit·API·coverage·config는 통과했다. local + 전체 E2E는 75 passed, 기존 develop modulepreload 기대치 1건 실패였으며 + #490 범위와 중복하지 않았다. Devin의 현재 unresolved 정보성 thread 7개가 + 있고 malformed persisted job ID의 분류 경계가 남아 있지만, qualifying + approval은 없다. - #505: `develop@2c328875` 대상 `b8435c719baf4ee9eaa2907e2c93c6d959711d66`. provider가 반환한 Checkout redirect가 임의 HTTPS 호스트로 향하지 않도록 정확한 From e8c75a557e090fdfb943e1346888df00681151c8 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 06:59:06 +0900 Subject: [PATCH 064/115] docs: record invite security verification --- docs/product-technical-gap-baseline.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3f76a2e6..6a7433c3 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -256,6 +256,15 @@ HEAD가 바뀌면 다시 확인해야 한다. 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval 부재로 병합하지 않았다. +- #593: `develop@2c328875` 대상 + `a7bc39d16fe5240832ef08f0ee80e9c64dea7181`. pending invite roster에서 bearer + token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 + 초대를 수락하도록 했다. malformed invite/share path도 structured request + log에서 token segment를 redaction한다. 전용 invite identity 보안 회귀, + 전체 unit/API, config 3개가 로컬 통과했고, hosted 기능·보안·fuzz·coverage· + cloud·SAST·dependency/OSV Checks는 통과했다. Scorecard·Trivy·OSV scanner는 + neutral이고 OpenCode는 current-head verdict 부재로 fail-closed 되었으며, + review threads는 0이지만 qualifying approval은 없다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 방지, artifact link의 From 8f5cbfdac9a14b405f87017dbe1d7d61d9cf5aec Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 07:10:16 +0900 Subject: [PATCH 065/115] docs: refresh exact-head queue evidence --- docs/product-technical-gap-baseline.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6a7433c3..f819547d 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 직전 exact `46546277`은 기능·보안 Checks 통과에도 OpenCode current-head verdict 부재와 Strix 취소·artifact 부재; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `e8c75a55`는 기능·보안 Checks 통과에도 OpenCode current-head verdict 부재와 Strix 실행 중; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -115,14 +115,15 @@ HEAD가 바뀌면 다시 확인해야 한다. cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD의 seed-load race는 empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 - 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. hosted - unit/API·OSV·dependency review는 통과했으며 qualifying approval은 없다. -- #625: `develop@2c328875` 대상 `c0c2b8489567a4c0f09dde2aef4dd6be4610b5f2`. + 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. 전체 + Playwright 100개도 통과했으며 모든 Devin thread는 해결됐지만 qualifying + approval은 없다. +- #625: `develop@2c328875` 대상 `e8c75a557e090fdfb943e1346888df00681151c8`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 반영했다. exact-head functional/security/coverage/unit Checks는 terminal success이고 Scorecard·Trivy·OSV scanner는 neutral이다. OpenCode는 현재 - head verdict 부재로 fail-closed 되었고 qualifying approval이 없어 병합하지 - 않았다. + head verdict 부재로 fail-closed 되었고 Strix는 현재 실행 중이며 qualifying + approval이 없어 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 @@ -315,9 +316,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 대상 current head `98fd12d145292ed198fde111bd02690c3e18ecbf`. SQLite access-grant schema·membership epoch·one-time consume/audit 경계를 current CodeGraph와 대조했고, attachment 삭제와 mint가 경합할 때 FK extended code 787을 - nondisclosing `null` transition으로 변환하는 최소 수정과 회귀를 추가했다. - full unit·API·fuzz 및 access-grant focused 5+10+4+domain tests가 통과했으며, - replacement hosted Checks는 queued이고 qualifying approval은 없다. + nondisclosing `null` transition으로 변환하는 최소 수정과 회귀를 확인했다. + access-grant focused 21개, 전체 unit·API·docstring·config 3개, fuzz 14개, + coverage가 통과했다. 전체 Playwright는 75 passed와 부모 develop의 기존 + modulepreload 1건 실패였고, exact-head hosted cloud-e2e·unit/API·OSV·dependency + Checks는 통과했다. 부모 #506이 아직 보호 병합되지 않았고 qualifying approval도 + 없어 병합하지 않았다. - #511: stacked base `fix/stripe-checkout-provider-boundary-488@5d1bf1b023d4152610d9bc247c02da27429d33cd` 대상 `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 From a41db2daaac4656f5b9f9b70bd147a1aebb63832 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 07:13:59 +0900 Subject: [PATCH 066/115] docs: record current numeric-zero evidence --- docs/product-technical-gap-baseline.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f819547d..6e9b11cb 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -167,14 +167,14 @@ HEAD가 바뀌면 다시 확인해야 한다. provider HTTP 500과 vulnerability report 부재로 fail-closed 되었으며 qualifying approval이 없어 병합하지 않았다. - #610: `develop@2c328875` 대상 - `3bb2bd95905d590fe3d1d0d9a8fc6c6ec133c04a`. numeric-zero 공통 정규화 경계와 - JSON/CSV export를 current CodeGraph와 대조했고 focused numeric-zero 12개, - 전체 unit 및 config 3개가 통과했다. 전체 Playwright는 88개 중 87개가 - 통과했으며 유일한 실패는 develop baseline의 modulepreload 누락(#490에서 - 별도 수정 중)이다. current-head hosted functional/security/fuzz/coverage - Checks는 통과했지만 OpenCode run `33180751297`/job `98980396931`은 - current-head verdict 부재로 fail-closed 되었고 qualifying approval도 없어 - 병합하지 않았다. + `0ead5e6c5f53dc74c6cb2666e36d35153ce2fd91`. numeric-zero 공통 정규화 경계와 + Hono 4.13.5 lock alignment를 current CodeGraph와 대조했고 numeric-zero + round-trip E2E 12개, 전체 unit·API·fuzz·config 3개가 통과했다. 전체 + Playwright는 88개 중 87개가 통과했으며 유일한 실패는 develop baseline의 + modulepreload 누락(#490에서 별도 수정 중)이다. current-head hosted + functional/security/fuzz/coverage Checks는 통과했지만 OpenCode job + `98995709958`은 current-head verdict 부재로 fail-closed 되었고 qualifying + approval도 없어 병합하지 않았다. - #608: `28a217891bba7c515b93755ba6593f476b6a9adc` (base `develop@2c328875`). 빈 상태 task-dependent action의 정적 초기 markup에도 native `disabled`, `aria-disabled`, `aria-describedby`를 설정해 seed/cloud From bb882f5efe3d41f83a5a7702707e22a06c43a504 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 07:26:23 +0900 Subject: [PATCH 067/115] docs: refresh webhook and hierarchy evidence --- docs/product-technical-gap-baseline.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6e9b11cb..03977b4e 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -118,12 +118,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. 전체 Playwright 100개도 통과했으며 모든 Devin thread는 해결됐지만 qualifying approval은 없다. -- #625: `develop@2c328875` 대상 `e8c75a557e090fdfb943e1346888df00681151c8`. +- #625: `develop@2c328875` 대상 `a41db2daaac4656f5b9f9b70bd147a1aebb63832`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 - 반영했다. exact-head functional/security/coverage/unit Checks는 terminal - success이고 Scorecard·Trivy·OSV scanner는 neutral이다. OpenCode는 현재 - head verdict 부재로 fail-closed 되었고 Strix는 현재 실행 중이며 qualifying - approval이 없어 병합하지 않았다. + 반영했다. exact-head functional/security/coverage/unit/Strix Checks는 + terminal success이고 Scorecard·Trivy·OSV scanner는 neutral이다. OpenCode + `98999983402`는 현재 head의 APPROVED/CHANGES_REQUESTED verdict 부재로 + fail-closed 되었고 qualifying approval도 없어 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 @@ -255,8 +255,13 @@ HEAD가 바뀌면 다시 확인해야 한다. - #588: `develop@2c328875` 대상 `bc60476829ec98f37d83977a9432b79ba0b3c0d6`. outbound webhook SSRF 단일 수정 경로로서 encoded IP, IPv4/IPv6 special-use 주소, DNS rebinding, pinned connection, legacy destination migration을 다룬다. - 일반 hosted 게이트는 통과했지만 Strix provider 실패와 qualifying approval - 부재로 병합하지 않았다. + current CodeGraph와 대조한 전송 정책·등록 facade·startup migration에 결함은 + 없었다. 전용 webhook 회귀 7개, 전체 unit·API·fuzz·config 3개·docstring· + aggregate coverage가 통과했고 전체 Playwright는 75/76 통과였으며 유일한 + 실패는 develop 기준선의 `modulepreload` 기대였다. current-head hosted + functional/security/coverage/fuzz Checks와 OpenCode는 통과했지만 Strix + `98670001775`는 OpenRouter unavailable 및 OpenAI 429 quota exhaustion으로 + structured report 없이 fail-closed 되었고, qualifying approval도 없다. - #593: `develop@2c328875` 대상 `a7bc39d16fe5240832ef08f0ee80e9c64dea7181`. pending invite roster에서 bearer token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 @@ -344,7 +349,9 @@ HEAD가 바뀌면 다시 확인해야 한다. four-level hierarchy domain의 immutable projection이 persisted `kind`와 `sourceIndex`를 nested `record` 안에서 보존하는지 current CodeGraph와 CodeRabbit 지적을 대조 검토했다. hierarchy unit 10개와 전체 unit·API·coverage가 - 통과했고 hosted Checks와 Strix도 통과했지만 qualifying approval은 없다. + 통과했고 전체 Playwright는 부모 develop의 기존 modulepreload 1건 실패 외 + 75개가 통과했다. hosted Checks와 Strix도 통과했지만 qualifying approval은 + 없다. - #517: stacked base `feat/work-item-hierarchy-domain-287@36c11dd0bf907569184d7d73172b675d21bd0ff1` 대상 `73ce4227d761c79a9fcad39b0455fec4b35b6274`. schedule outcome의 UTC From 38afb18bc289028929177a7499e0e5ceb711ed11 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 07:31:26 +0900 Subject: [PATCH 068/115] docs: record hono upgrade verification --- docs/product-technical-gap-baseline.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 03977b4e..6758f622 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -342,9 +342,10 @@ HEAD가 바뀌면 다시 확인해야 한다. Hono를 registry 최신 보안 패치 4.13.5로 갱신하고 package/lockfile을 함께 재생성했다. `npm ci`, production `npm audit`(취약점 0), unit·API·coverage는 통과했다. 전체 E2E는 75/76 통과했으며 유일한 실패는 기존 - `modulepreload` 링크 기대다. 이전 4.13.4 head의 OpenCode verdict 부재와 - Strix LLM HTTP 500은 current-head 보안 판정이 아니며, 새 head replacement - Checks는 queued/in-progress이고 qualifying approval은 없다. + `modulepreload` 링크 기대다. current-head functional/security/fuzz/coverage + Checks는 통과했고 OpenCode `98895401107`은 current-head verdict 부재로 + fail-closed 되었으며, 해당 exact commit의 check-run 목록에는 중앙 Strix + 결과가 없어 qualifying approval과 함께 병합하지 않았다. - #515: `develop@2c328875` 대상 `36c11dd0bf907569184d7d73172b675d21bd0ff1`. four-level hierarchy domain의 immutable projection이 persisted `kind`와 `sourceIndex`를 nested `record` 안에서 보존하는지 current CodeGraph와 From 2d013c5be8a4d24a6bfe5809d60388b96487b21e Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 07:54:35 +0900 Subject: [PATCH 069/115] docs: correct calendar persistence review evidence --- docs/product-technical-gap-baseline.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 6758f622..a28b839d 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -373,8 +373,9 @@ HEAD가 바뀌면 다시 확인해야 한다. `cursor/bc-4522f1d4-ae7e-434e-b612-d250afa4d097-5645@e2f560078d3e2862c5dc6c395c159d12dfe1e6fa` 대상 `1e491bac2fc42b1f17c93666223ce1da78c6ba61`. calendar subscription SQLite adapter의 `calendar_read` purpose 기본값, membership/issuance epoch 경계, - expiry·revoke·race·retention 및 secret-hash 저장을 current CodeGraph·resolved - 리뷰와 대조했고 calendar unit 26개가 통과했다. hosted listed unit/API·cloud + expiry·revoke·race·retention 및 secret-hash 저장을 current CodeGraph·현재 + HEAD의 Devin informational thread 8개와 대조했고 calendar unit suite와 + API/fuzz/config/docstring/diff 검사가 통과했다. hosted listed unit/API·cloud E2E·OSV·dependency 및 Devin Checks는 통과했지만 schema installer는 후속 route integration 범위로 의도적으로 unwired이고 current OpenCode/Strix check entry와 qualifying approval이 없어 병합하지 않았다. From dd2826271806baa656f41c49437a44b23e568d0c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:02:20 +0900 Subject: [PATCH 070/115] docs: refresh clearfolio readiness evidence --- docs/product-technical-gap-baseline.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index a28b839d..c3302ac6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -332,12 +332,16 @@ HEAD가 바뀌면 다시 확인해야 한다. `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 durable provider outcome 경계를 점검했고 current local billing unit/API와 hosted stacked Checks는 통과했지만 qualifying approval은 없다. -- #537: stacked base `feat/clearfolio-capability-readiness-489@9e465a2c` 대상 - `abcd68c20ef073818d1869f2a5e891fb99248a05`. Clearfolio configuration +- #537: stacked base + `feat/clearfolio-capability-readiness-489@9e465a2cdebc6769717914160f24ecb2b339e163` + 대상 `abcd68c20ef073818d1869f2a5e891fb99248a05`. Clearfolio configuration readiness를 liveness와 분리하고 authenticated capability/503 표면을 - 추가한 제출본으로 local readiness·unit·API는 통과했다. 전체 E2E의 1개 - modulepreload 실패는 이 stack 이전의 #628/#495 경로이며, stacked hosted - Checks는 통과했지만 protected develop 승인 근거는 없다. + 추가한 제출본으로 local readiness 9개, 전체 unit·API·fuzz·config·docstring· + diff 검사가 통과했다. 전체 E2E는 75 passed, 기존 develop modulepreload + 기대치 1건 실패였고, exact-head hosted cloud-e2e·unit/API·dependency·OSV + Checks는 성공, manifest-pattern-coverage는 skipped였다. 현재 review + threads는 0이지만 qualifying approval이 없고, 부모 stack과 후속 exact-head + governance evidence가 남아 있어 병합하지 않았다. - #602: `develop@2c328875` 대상 `78e803718d1c90a09c7827cc98c980e99e231454`. Hono를 registry 최신 보안 패치 4.13.5로 갱신하고 package/lockfile을 함께 재생성했다. `npm ci`, production `npm audit`(취약점 0), unit·API·coverage는 From 2faa4ed68f3208b7aa7811257a7cef3817c46bf5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:10:29 +0900 Subject: [PATCH 071/115] docs: refresh SQLite backup evidence --- docs/product-technical-gap-baseline.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c3302ac6..0ff4d76c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -387,9 +387,12 @@ HEAD가 바뀌면 다시 확인해야 한다. `b6842e7cf60f77b1d5cee04e1c020e411afc9a6f`. SQLite backup의 read-only source/WAL 처리, bounded schema streaming, destination race 방지, source replacement guard와 recovery 문서 포인터를 current CodeGraph·테스트·리뷰 - 지적과 대조했고 focused recovery/output/schema/source/temp 테스트는 통과했다. - Strix artifact는 `invalid_tools` 400으로 중단되어 authoritative clean verdict가 - 없고, qualifying approval도 없어 병합하지 않았다. + 지적과 대조했고 focused recovery/output/schema/source/temp 테스트와 전체 + unit·API·fuzz·config·docstring·coverage 검사가 통과했다. exact-head hosted + functional/security checks는 terminal success였지만 Strix는 + `STRIX_PROVIDER_UNAVAILABLE`로 실패했고 artifact 원인은 `invalid_tools` 400 + (tool description 길이 제한)로 authoritative clean verdict가 없다. 현재 + unresolved thread는 0개지만 qualifying approval이 없어 병합하지 않았다. - #601: `develop@2c328875` 대상 `98f4354733c68c9f361e516f86ba2d95e97af20e`. 날짜 formatter의 native-compatible zero-padding과 benchmark checksum fail-closed 수정을 current CodeGraph·리뷰와 From b5a849d0061ddd3edea1948db659f23b58823347 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:17:31 +0900 Subject: [PATCH 072/115] docs: record exact-head CI gate evidence --- docs/product-technical-gap-baseline.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0ff4d76c..1bccfdfb 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -248,7 +248,9 @@ HEAD가 바뀌면 다시 확인해야 한다. current CodeGraph·resolved 리뷰와 대조했고 local server coverage 100%와 browser coverage 154개가 통과했다. hosted unit·API·cloud E2E·security· CodeQL·fuzz·Noema는 통과했지만 OpenCode current-head required check는 - 실패했고 qualifying approval도 없어 병합하지 않았다. + 현재 SHA verdict 부재로 실패했고 Strix는 취소되어 scan report가 없다. + current unresolved thread는 0개지만 qualifying approval도 없어 병합하지 + 않았다. - #552: `develop@2c328875` 대상 `92487d1f9e5215cd4b7302275c23393596799ba3`, draft 상태. 일반 hosted 게이트는 통과하고 Strix는 취약점 0건을 출력한 뒤 provider 장애와 authoritative report 부재로 fail-closed 되었다. From 841249a5c812a1c4ca1788a302af647d4d7d8712 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:23:33 +0900 Subject: [PATCH 073/115] docs: refresh schedule reason baseline evidence --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 1bccfdfb..f05ebb76 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -372,9 +372,11 @@ HEAD가 바뀌면 다시 확인해야 한다. 대상 `95982819c49cf08ed92b18795a80234882676d53`. terminal reason의 action authorization, cancellation의 독립 approval·self-approval 방지, exact resource version과 atomic commit receipt를 current CodeGraph·resolved 리뷰와 대조했고 - reason-event unit 13+1개와 coverage contract가 통과했다. hosted listed - unit/API·cloud E2E·OSV·dependency 및 Devin Checks는 통과했지만 current - OpenCode/Strix check entry와 qualifying approval은 없어 병합하지 않았다. + focused reason/outcome unit 34개, 전체 unit/API, fuzz 14개, config 3개, + Python docstring 및 diff 검사가 통과했다. hosted exact-head listed + unit/API·cloud E2E·OSV·dependency checks도 terminal success였지만 current + OpenCode/Strix check는 stacked base에 없고 qualifying approval도 없어 병합하지 + 않았다. - #541: stacked base `cursor/bc-4522f1d4-ae7e-434e-b612-d250afa4d097-5645@e2f560078d3e2862c5dc6c395c159d12dfe1e6fa` 대상 `1e491bac2fc42b1f17c93666223ce1da78c6ba61`. calendar subscription SQLite From 07d7862f4556db1e2397bb74486198615734f8aa Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:26:01 +0900 Subject: [PATCH 074/115] docs: record schedule outcome verification --- docs/product-technical-gap-baseline.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f05ebb76..80506714 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -364,9 +364,10 @@ HEAD가 바뀌면 다시 확인해야 한다. 대상 `73ce4227d761c79a9fcad39b0455fec4b35b6274`. schedule outcome의 UTC explicit-offset timestamp, blocker lifecycle, terminal-reason precedence와 immutable explanation을 current CodeGraph·resolved 리뷰와 대조했고 domain - unit 12+8개가 통과했다. hosted listed unit/API·cloud E2E·OSV·dependency 및 - Devin Checks는 통과했지만 current OpenCode/Strix check entry와 qualifying - approval은 없어 병합하지 않았다. + unit 20개, 전체 unit/API, fuzz 14개, config 3개, Python docstring 및 diff + 검사가 통과했다. hosted exact-head listed unit/API·cloud E2E·OSV·dependency + checks는 terminal success였고 manifest coverage는 skipped였지만 OpenCode/Strix + 는 stacked base에 없으며 qualifying approval도 없어 병합하지 않았다. - #518: stacked base `feat/schedule-outcome-domain-287@73ce4227d761c79a9fcad39b0455fec4b35b6274` 대상 `95982819c49cf08ed92b18795a80234882676d53`. terminal reason의 action From 620c793cce66c083c4a93f176959b29801955dcc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:34:49 +0900 Subject: [PATCH 075/115] docs: record checkout stack reconciliation --- docs/product-technical-gap-baseline.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 80506714..4a8f0d16 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -330,10 +330,14 @@ HEAD가 바뀌면 다시 확인해야 한다. Checks는 통과했다. 부모 #506이 아직 보호 병합되지 않았고 qualifying approval도 없어 병합하지 않았다. - #511: stacked base - `fix/stripe-checkout-provider-boundary-488@5d1bf1b023d4152610d9bc247c02da27429d33cd` 대상 - `01be3a5d59979e4c52d17bfaa4428c177dec0237`. Checkout attempt idempotency와 - durable provider outcome 경계를 점검했고 current local billing unit/API와 - hosted stacked Checks는 통과했지만 qualifying approval은 없다. + `fix/stripe-checkout-provider-boundary-488@6df68ade5064bd2a3b308f0d463792cc6f4e7111` 대상 + `219f3b31db5be2e04ebaeb9491b7fbaf5775d651`. stale parent를 force-push 없이 + merge commit으로 재조정하고 Checkout attempt idempotency, provider outcome, + secret/price 정규화 및 안전한 오류 경계를 current CodeGraph와 대조했다. exact + merge worktree의 billing focused, 전체 unit/API, fuzz 14개, config 3개, Python + docstring 및 diff 검사가 통과했다. 새 head의 hosted dependency는 success, + cloud-e2e·OSV·unit/API는 재실행 중이며 manifest coverage는 skipped, current + unresolved thread 0·qualifying approval 0이므로 병합하지 않았다. - #537: stacked base `feat/clearfolio-capability-readiness-489@9e465a2cdebc6769717914160f24ecb2b339e163` 대상 `abcd68c20ef073818d1869f2a5e891fb99248a05`. Clearfolio configuration From 30d50c63e77b12343538a0feee90e5d31da8b185 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:38:23 +0900 Subject: [PATCH 076/115] docs: record metric accessibility verification --- docs/product-technical-gap-baseline.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 4a8f0d16..8566cbe4 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -135,8 +135,11 @@ HEAD가 바뀌면 다시 확인해야 한다. - #509: `develop@2c328875` 대상 `ea9027743ebafd1ca5774a5a14227585cf796052`. summary metric explanation을 keyboard stop 없이 지속 노출하고 gradient 대비를 보강한 접근성 제출본이다. - focused 접근성·literal-title E2E 6개와 hosted required Checks·Strix는 통과했지만 - `REVIEW_REQUIRED`이며 qualifying approval이 없어 병합하지 않았다. + CodeGraph와 static HTML/CSS 경계를 대조했으며 focused 접근성·literal-title E2E + 6개, 전체 Playwright, 전체 unit, fuzz, config 3개 및 Python docstring 검사가 + exact head에서 통과했다. hosted listed Checks·Strix는 통과했지만 synthetic + merge checkout evidence가 승격되지 않았고, `REVIEW_REQUIRED`이며 qualifying + approval도 없어 병합하지 않았다. - #508: `develop@2c328875` 대상 `642034faf5c97ca8730a70ef89edf6f4fdd54840`. `computeTaskMetrics`의 duration cache를 `Int32Array`와 명시적 loop로 바꾼 제출본으로 benchmark-base From 3f1887b8b4e085148bbbb36d0e2aa41ca648f65d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:42:50 +0900 Subject: [PATCH 077/115] docs: correct metrics benchmark gate evidence --- docs/product-technical-gap-baseline.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 8566cbe4..38a595f4 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -143,10 +143,13 @@ HEAD가 바뀌면 다시 확인해야 한다. - #508: `develop@2c328875` 대상 `642034faf5c97ca8730a70ef89edf6f4fdd54840`. `computeTaskMetrics`의 duration cache를 `Int32Array`와 명시적 loop로 바꾼 제출본으로 benchmark-base - unit 16개와 protected-base/candidate를 고정한 local benchmark가 통과했다 - (semantic digest 동일, local median 개선 5.93%). current-head hosted required - Checks와 OpenCode·Strix는 terminal success이며 `REVIEW_REQUIRED`/qualifying - approval 부재로 병합하지 않았다. + unit 16개와 immutable base/candidate SHA를 명시한 local benchmark가 통과했다 + (semantic digest·aggregate 동일, median regression 없음). 전체 Playwright는 + 75개가 통과했고, benchmark의 로컬 SHA 입력 부재 1건과 develop의 기존 + `modulepreload` 기대 1건이 실패했다. current-head functional/security Checks는 + 통과했지만 OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500와 + report 부재로 fail-closed 되었으며, `REVIEW_REQUIRED`/qualifying approval + 부재로 병합하지 않았다. - #495: `develop@2c328875` 대상 `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. metadata-only render 경계, owner/status DOM shell 재사용, row identity 보존과 badge contrast 회귀를 From b18bb001e1e7f72fed3d4ac5ccd65a824ee82cf4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:52:52 +0900 Subject: [PATCH 078/115] docs: refresh billing checkout gate evidence --- docs/product-technical-gap-baseline.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 38a595f4..07f428b0 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -299,9 +299,16 @@ HEAD가 바뀌면 다시 확인해야 한다. - #505: `develop@2c328875` 대상 `b8435c719baf4ee9eaa2907e2c93c6d959711d66`. provider가 반환한 Checkout redirect가 임의 HTTPS 호스트로 향하지 않도록 정확한 - `checkout.stripe.com` 기본 포트를 검증하는 최소 보완을 넣었다. local - billing unit/API는 통과했으며 replacement hosted Checks는 queued이고 - qualifying approval은 없다. + `checkout.stripe.com` 기본 포트를 검증하는 최소 보완을 넣었다. CodeGraph와 + resolved review를 current head에서 대조했고 billing config 6개, checkout + 11개, API 1개, 전체 unit/API, fuzz 14개, config 3개, docstring 및 c8 + coverage가 통과했다. billing.mjs lines/functions 100%, branches 97.72%, + billing_configuration.mjs lines/functions/branches 100%였으며 global + coverage는 46.47%다. exact-head hosted security·CodeQL·dependency·OSV· + unit/API·cloud-e2e는 성공했지만 OpenCode는 current verdict 없이 failure, + Strix는 orchestrator provider HTTP 500으로 report artifact를 만들지 못해 + fail-closed 되었다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, 미해결 스레드 8개 + 모두 resolved, qualifying approval 0개이므로 병합하지 않았다. - #506: `develop@2c328875` 대상 `f3ae1f1f4ee66024776507d75f8fb752b2bf748c`. short-lived access-grant domain의 purpose/audience 고정, tenant-nondisclosing authorization, immutable grant From 58f843bf72d1a340de6a0bef553c7291441734a2 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 08:58:25 +0900 Subject: [PATCH 079/115] docs: record Clearfolio readiness gap --- docs/product-technical-gap-baseline.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 07f428b0..0c16921c 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -316,6 +316,15 @@ HEAD가 바뀌면 다시 확인해야 한다. CodeGraph·resolved 리뷰와 대조했고 domain/edge/coverage contract가 통과했다. hosted OpenCode·Strix·security·unit/API·cloud E2E Checks는 통과했지만 `REVIEW_REQUIRED`이고 qualifying approval이 없어 병합하지 않았다. +- #502: 오래된 stacked base `cursor/bc-d8443854-d031-4b84-b085-56f439fcbf05-df45` + `d8c58a8ee160e553e0ab1cacbc2c3b09e503ac89` 대상 `9e465a2cdebc6769717914160f24ecb2b339e163`. + Clearfolio capability readiness가 설정만 평가하고 provider transport 없이 + liveness와 분리되는 경계를 current CodeGraph와 대조했다. readiness focused + 5개, 전체 unit, fuzz 14개, config 3개, docstring, c8 coverage가 통과했고 + `server/clearfolio.mjs`는 lines 98.89%, functions 100%, branches 93.68% + 였다(global coverage 47.21%). exact-head repository Checks는 성공했지만 + PR은 Draft이며 `CONFLICTING/DIRTY`, reviewDecision null, qualifying approval + 0개라 병합하지 않았다. - #503: `develop@2c328875` 대상 `abc9639ffd7a6bd835a0f8206854185722d60965`. README·ARCHITECTURE·CLAUDE· AGENTS 사이의 canonical runtime authority, live PR ancestry와 protected From 9363571956d949e7c21d3eaa7cbe047fdbc23962 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:06:56 +0900 Subject: [PATCH 080/115] docs: refresh schema migration gate evidence --- docs/product-technical-gap-baseline.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0c16921c..3723d4dd 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -234,12 +234,19 @@ HEAD가 바뀌면 다시 확인해야 한다. cloud-E2E·unit/API·OSV·Dependency Checks도 terminal success다. parent가 아직 보호 병합되지 않았고 qualifying approval이 없어 병합하지 않았다. - #500: `develop@2c328875` 대상 - `b7ef5c587aac52d03880b087af39580ff52384cc`. fail-closed schema migration - ledger의 unknown-object, ledger-contract, compatibility-column 및 concurrent - startup 경계를 current CodeGraph·resolved 리뷰와 대조했고 관련 unit/API와 - coverage 전체 계약은 통과했다. hosted 보안·테스트 게이트는 통과했지만 - OpenCode는 current-head 승인 verdict 부재로, Strix는 provider HTTP 500과 - vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. + `b7ef5c587aac52d03880b087af39580ff52384cc`. CodeGraph로 fail-closed schema + migration ledger의 unknown-object, ledger-contract, compatibility-column, + atomic bootstrap 및 concurrent-startup 경계를 확인했고 current review + thread는 모두 resolved다. exact-head local schema focused 25개, 전체 unit, + fuzz 14개, config 3개, API coverage cases, docstring check와 + `git diff --check`가 통과했다. `server/schema_migration.mjs` coverage는 + lines 98.97%/functions 100%/branches 94.89%, `server/db.mjs`는 + 100%/100%/100%이며 전체 lines는 48.47%다. hosted functional/security + Checks는 exact head에서 terminal success 또는 expected neutral/skipped로 + 수렴했지만 OpenCode는 current-head 승인 verdict 부재로 실패했고, Strix + run `33156817758`은 `openai/orchestrator/free` HTTP 500으로 report artifact를 + 만들지 못해 fail-closed 되었다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + qualifying approval 0건이므로 병합하지 않았다. - #497: `develop@2c328875` 대상 `9d23bbf5768f41542f3b3c5eac75d17220b0dcf0`. workflow registry의 pagination 완결성·immutable tree 증거, exact-SHA preflight와 identity drift 방지, From 84b95b66741c42ae10fda102dc00b8c51e347332 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:10:17 +0900 Subject: [PATCH 081/115] docs: record workflow registry gate evidence --- docs/product-technical-gap-baseline.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3723d4dd..0a0e77b7 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -248,11 +248,15 @@ HEAD가 바뀌면 다시 확인해야 한다. 만들지 못해 fail-closed 되었다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying approval 0건이므로 병합하지 않았다. - #497: `develop@2c328875` 대상 - `9d23bbf5768f41542f3b3c5eac75d17220b0dcf0`. workflow registry의 pagination - 완결성·immutable tree 증거, exact-SHA preflight와 identity drift 방지, - dry-run 기본값 및 명시적 apply 조건을 current CodeGraph·resolved 리뷰와 - 대조했고 audit/cleanup/timeout/coverage 및 API 검증은 통과했다. hosted - required Checks와 Strix는 통과했지만 qualifying approval이 없어 병합하지 + `9d23bbf5768f41542f3b3c5eac75d17220b0dcf0`. CodeGraph로 workflow registry의 + pagination 완결성·immutable tree 증거, exact-SHA preflight와 identity drift + 방지, dry-run 기본값 및 명시적 apply 조건을 대조했고 current review thread는 + 모두 resolved다. `npm ci` 후 audit 12개, cleanup 7개, coverage 14개, 전체 + unit, fuzz 14개, config 3개, docstring check와 `git diff --check`가 통과했다. + `workflow_registry_audit.mjs` coverage는 lines 99.39%/functions 94.11%/ + branches 97.38%, cleanup은 98.70%/100%/94.70%다. hosted required Checks와 + Strix는 exact head에서 terminal success 또는 expected neutral/skipped지만 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying approval 0건이므로 병합하지 않았다. - #523: `develop@2c328875` 대상 `135117e0594939240e787a161574b6fb4e10f155`. Server Tests의 PR head 고정, From 8135316aa41062d814f4729c8128e1c80d0a7bd6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:22:07 +0900 Subject: [PATCH 082/115] docs: record render performance evidence --- docs/product-technical-gap-baseline.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0a0e77b7..a0e37dfb 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -151,11 +151,19 @@ HEAD가 바뀌면 다시 확인해야 한다. report 부재로 fail-closed 되었으며, `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. - #495: `develop@2c328875` 대상 - `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. metadata-only render 경계, - owner/status DOM shell 재사용, row identity 보존과 badge contrast 회귀를 - current CodeGraph·resolved 리뷰와 대조했고 hosted unit·API·cloud E2E는 - 통과했다. OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500과 - vulnerability report 부재로 fail-closed 되었으며 qualifying approval도 없다. + `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. CodeGraph로 metadata-only + render 경계, owner/status DOM shell 재사용, row identity 보존과 badge + contrast 회귀를 대조했고 current review thread는 모두 resolved다. `npm ci` + 후 전체 unit, fuzz 14개, config 3개, docstring check, coverage/API cases와 + `git diff --check`가 통과했다. `app.js` coverage는 lines 25.69%/ + functions 15.57%/branches 70.14%, 전체 lines는 45.63%다. exact-head hosted + cloud-e2e report는 5,000-row protected-base median 5,815.2ms 대비 optimized + median 114.2ms, 98.04% 개선과 편집·progress·drag 회귀 통과를 기록했다. + local macOS benchmark는 같은 시나리오가 3분 timeout으로 종료되어 hosted + report를 성능 증거로 사용했다. OpenCode는 current-head verdict 부재로, + Strix run `33179685657`은 provider HTTP 500과 report artifact 부재로 + fail-closed되었다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying approval + 0건이므로 병합하지 않았다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula From d748bc711cc6ff99e3100c7caad97bb5299ae43b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:24:34 +0900 Subject: [PATCH 083/115] docs: record Clearfolio configuration evidence --- docs/product-technical-gap-baseline.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index a0e37dfb..7a0f85f6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -299,12 +299,16 @@ HEAD가 바뀌면 다시 확인해야 한다. neutral이고 OpenCode는 current-head verdict 부재로 fail-closed 되었으며, review threads는 0이지만 qualifying approval은 없다. - #493: `develop@2c328875` 대상 - `78f8b557cd2b9cab238af72304f0ed42e1557759`. Clearfolio production 설정의 - fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 방지, artifact link의 - same-origin·credential·fragment 검증을 current CodeGraph·resolved 리뷰와 - 대조했다. Clearfolio 관련 unit 4개와 전체 unit·API, hosted OpenCode·Strix· - security·cloud E2E Checks가 통과했지만 qualifying approval이 없어 병합하지 - 않았다. + `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio + production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 + 방지, artifact link의 same-origin·credential·fragment 검증을 대조했고 + current review thread는 모두 resolved다. `npm ci` 후 Clearfolio 관련 unit + 4개, 전체 unit, fuzz 14개, config 3개, API, docstring check와 coverage가 + 통과했다. `server/clearfolio.mjs` coverage는 lines 100%/functions 100%/ + branches 99.10%, 전체 lines는 45.32%다. hosted OpenCode·Strix·security· + cloud E2E Checks는 exact head에서 terminal success 또는 expected neutral/ + skipped로 수렴했지만 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying + approval 0건이므로 병합하지 않았다. - #498: `fix/clearfolio-production-configuration@78f8b557` 대상 `d7fae634706d4af8d94ae0b5201d0b539f81df84`. Clearfolio provider 응답의 redirect·HMAC·JSON media type·UTF-8·256 KiB streamed byte ceiling과 From cffeae34d2ac1715118f4f79e1bbb6e6d53bac7c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:33:13 +0900 Subject: [PATCH 084/115] docs: refresh PR 468 evidence --- docs/product-technical-gap-baseline.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 7a0f85f6..b74ad234 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -167,10 +167,18 @@ HEAD가 바뀌면 다시 확인해야 한다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula - compatibility 문자를 current CodeGraph·resolved 리뷰와 대조했다. local - unit·coverage/API와 전체 E2E 81개, screenshot 검수 및 hosted OpenCode·보안· - 테스트 게이트는 통과했다. Strix artifact는 0 findings를 기록했지만 후속 - provider 장애로 gate가 fail-closed 되었고 qualifying approval도 없다. + compatibility 문자를 current CodeGraph·resolved 리뷰와 대조했다. `npm ci`는 + 0 vulnerabilities였고 editor unit, 전체 unit/API, fuzz 14개, config 3개, + Python docstring, coverage, `git diff --check`가 통과했다. 전체 Playwright + 81개도 통과했으며 coverage는 `app.js` lines 23.93%/functions 13.33%/ + branches 67.18%, 전체 lines 45.02%다. exact-head hosted cloud-e2e, + unit/API, security, CodeQL, Semgrep, dependency/OSV, property fuzz, + coverage, Noema는 성공 또는 expected neutral/skipped로 terminal 수렴했고, + OpenCode check는 성공했지만 current-head review verdict는 남기지 않았다. + Strix run `32670139864`는 `STRIX_PROVIDER_UNAVAILABLE`로 종료됐고 + `strix-reports` artifact는 expired라 authoritative report를 확인할 수 없다. + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, + qualifying approval 0건이므로 병합하지 않았다. - #490: `develop@2c328875` 대상 `2888a5ba776c6c8943278bb7e35f070aebf964da`. editor invoker의 stable ID/action/ task identity 기록, rerender 이후 allowlisted control 복원과 selector-hostile From 5b3ee2b451b8bf506250dd9636f6abe2536ff1d4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:43:14 +0900 Subject: [PATCH 085/115] docs: refresh PR 629 and 625 evidence --- docs/product-technical-gap-baseline.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b74ad234..ebfb70d1 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `e8c75a55`는 기능·보안 Checks 통과에도 OpenCode current-head verdict 부재와 Strix 실행 중; #629 `89fff38b`는 cloud/unit/API/OSV/dependency hosted Checks 통과; 모든 대상에 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `cffeae34`는 기능·보안 Checks와 Strix가 통과했지만 OpenCode current-head verdict가 없어 실패했고 qualifying approval도 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -115,15 +115,23 @@ HEAD가 바뀌면 다시 확인해야 한다. cloud-E2E의 seed 비동기 경쟁 조건을 `.empty-cell` 렌더 대기로 수정하고, Devin이 지적한 모바일 정렬·로그인 폭 floor도 보완했다. 현재 HEAD의 seed-load race는 empty-cell과 공통 activity-subtree helper에 대기를 추가해 로컬 targeted E2E가 - 통과했고, hosted cloud/unit/API/OSV/dependency Checks도 통과했다. 전체 - Playwright 100개도 통과했으며 모든 Devin thread는 해결됐지만 qualifying + 통과했고, `npm ci`는 취약점 0건이었다. unit/API, config 3개, fuzz 14개, + Python docstring, coverage, `git diff --check`, 전체 Playwright 100개가 + 통과했다. coverage는 total lines 43.95%, functions 33.05%, branches 81.09% + (app lines 22.36%, cloud-sync lines 10.49%)였다. exact-head hosted inventory에는 + cloud-e2e `98954281708`, unit-and-api `98954281481`, dependency-review + `98954281435`, osv-scan `98954283222`, osv-scanner `98954424958` 성공과 + manifest-pattern-coverage 스킵이 있었고, central OpenCode/Strix run은 이 + stacked head에 붙지 않았다. 전체 Devin thread는 해결됐지만 qualifying approval은 없다. -- #625: `develop@2c328875` 대상 `a41db2daaac4656f5b9f9b70bd147a1aebb63832`. +- #625: `develop@2c328875` 대상 `cffeae34d2ac1715118f4f79e1bbb6e6d53bac7c`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 반영했다. exact-head functional/security/coverage/unit/Strix Checks는 - terminal success이고 Scorecard·Trivy·OSV scanner는 neutral이다. OpenCode - `98999983402`는 현재 head의 APPROVED/CHANGES_REQUESTED verdict 부재로 - fail-closed 되었고 qualifying approval도 없어 병합하지 않았다. + terminal success이고 Scorecard·Trivy·OSV scanner는 neutral이다. Strix + `99023490175`는 annotations 0으로 성공했지만, OpenCode `99023534922`는 + 현재 head의 APPROVED/CHANGES_REQUESTED verdict 부재로 fail-closed 되었다. + GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, + qualifying approval 0이며 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 From b0fc6660a51441e738a7beaff81f0822aade4d06 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 09:49:41 +0900 Subject: [PATCH 086/115] docs: refresh PR 621 verification evidence --- docs/product-technical-gap-baseline.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ebfb70d1..e8b18d09 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -99,15 +99,20 @@ HEAD가 바뀌면 다시 확인해야 한다. 초기화하고, 첫 방문 seed 탐색 중 progress/order 변경이 sample을 영속화하지 않으며, 빠른 검색 입력의 전체 재렌더를 디바운스한다. 프로젝트 선택 후 인라인 변경이 autosave되도록 cloud cache adapter를 서버 정적 허용목록에도 등록했다. 현재 HEAD의 - local 전체 E2E 99개, unit, API, fuzz, workflow 설정 테스트가 통과했다. 저장소 + `npm ci`는 취약점 0건이었고, unit, API, fuzz 14개, workflow 설정 3개, + Python docstring, coverage, `git diff --check`, 전체 Playwright 99개가 통과했다. + coverage는 total lines 43.95%, functions 33.05%, branches 81.09% + (app lines 22.36%, cloud-sync lines 10.49%)였다. 저장소 snapshot이 사라져도 interactive 저장이 cloud/file sync까지 계속되도록 메모리 adoption flag와 회귀 테스트를 추가했고, sample cloud onboarding도 프로젝트 생성 즉시 같은 hydrate 경로로 adoption되도록 보강했다. hosted unit/API·coverage·cloud-E2E·Noema·CodeQL·Semgrep·OSV·Trivy-FS·property fuzz는 통과했고 Scorecard/OSV scanner는 neutral이다. Strix run `33201343269`는 - contextual-orchestrator HTTP 500 provider failure를 세 차례 재시도한 뒤 report 없이 - fail-closed되었고, OpenCode는 current-head verdict 부재로 실패했다. 현재 HEAD - qualifying approval은 없다. + `openai/orchestrator/free` 요청이 HTTP 500 및 `invalid_stream_options` 400으로 + 실패해 SARIF 결과 0건인 failed artifact만 남겼고, authoritative 분석 없이 + fail-closed되었다. OpenCode check `99016686511`도 current-head verdict 부재로 + 실패했다. 현재 HEAD의 Devin/Coderabbit thread는 모두 해결됐지만 qualifying + approval은 없다. - #629: stacked base `feat/wbs-search-context@5c6c2530` 대상 `89fff38b54169d0582af43aee2deea13da6684bb`. 모바일에서 cloud 로그인 영역이 줄바꿈되고 select가 24px 이상 유지되도록 보완했으며, named controls·landmark· From aa6aa2dd27250d61ac8dc080fc895ac4460a9917 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 10:06:10 +0900 Subject: [PATCH 087/115] docs: record PR 608 and 610 verification --- docs/product-technical-gap-baseline.md | 40 +++++++++++++++++++++----- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e8b18d09..19a66e9a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `cffeae34`는 기능·보안 Checks와 Strix가 통과했지만 OpenCode current-head verdict가 없어 실패했고 qualifying approval도 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `b0fc6660`은 기준선 갱신 push 뒤 Checks 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #608 `f52d0930`과 #610 `bd538f05`도 새 HEAD Checks 재실행 중이며 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -129,13 +129,39 @@ HEAD가 바뀌면 다시 확인해야 한다. manifest-pattern-coverage 스킵이 있었고, central OpenCode/Strix run은 이 stacked head에 붙지 않았다. 전체 Devin thread는 해결됐지만 qualifying approval은 없다. -- #625: `develop@2c328875` 대상 `cffeae34d2ac1715118f4f79e1bbb6e6d53bac7c`. +- #608: `develop@2c328875` 대상 `f52d093069490c15eb525690774786d4fabb267d`. + 네이티브 `disabled`로 전환한 빈 상태 CSV/Gantt 동작을 CodeGraph의 + `renderAll()` 경로와 대조했다. 기존 저장소 E2E가 요구하는 + `cloud-sync.js`·`analytics.js` modulepreload 누락과, 제거된 title tooltip을 + 계속 기대하던 stale assertion을 확인해 각각 preload 두 줄과 native + disabled/`aria-describedby` 계약 assertion으로 최소 수정했다. `npm ci`는 + 취약점 0건이었고 unit, config 3개, docstring, fuzz 14개, 전체 Playwright + 79개, coverage, `git diff --check`가 로컬에서 통과했다. coverage는 total + lines 44.60%/functions 33.76%/branches 81.84%였다. 새 HEAD hosted + inventory는 bootstrap·close-empty·manifest/취소 계열만 terminal이고 + coverage-source-tree, OSV, Trivy-FS, dependency-review, unit/API, + Scorecard, cloud-E2E, property fuzz, Semgrep, CodeQL 분석, Noema가 + queued/in progress다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + current-head APPROVED 0, unresolved thread 0이다. +- #610: `develop@2c328875` 대상 `bd538f05df8203577a980bd7f56af1fab4040018`. + CodeGraph로 `ZERO_VALID_FIELDS`와 편집/저장·외부 `wbs.json`·JSON sync·CSV + export 호출 경로를 대조해 numeric zero 보존 구현에는 추가 결함이 없음을 + 확인했다. 기존 develop의 modulepreload 계약 누락이 전체 E2E에서 재현되어 + `index.html`에 동일한 preload 두 줄만 추가했다. `npm ci`는 취약점 0건, + zero 회귀 E2E 12개, unit, config 3개, docstring, fuzz 14개, 전체 + Playwright 88개, API/coverage, `git diff --check`가 통과했다. coverage는 + total lines 44.44%/functions 33.76%/branches 81.76%였다. 새 HEAD + hosted Checks는 dependency-review와 close-empty를 제외한 required + workflow들이 queued/in progress이며, GraphQL은 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, + unresolved thread 0이다. +- #625: `develop@2c328875` 대상 `b0fc6660a51441e738a7beaff81f0822aade4d06`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 - 반영했다. exact-head functional/security/coverage/unit/Strix Checks는 - terminal success이고 Scorecard·Trivy·OSV scanner는 neutral이다. Strix - `99023490175`는 annotations 0으로 성공했지만, OpenCode `99023534922`는 - 현재 head의 APPROVED/CHANGES_REQUESTED verdict 부재로 fail-closed 되었다. - GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, + 반영했다. 이 HEAD에서는 coverage-source-tree, OSV, Trivy-FS, + dependency-review, unit/API, Scorecard, cloud-E2E, property fuzz, + Semgrep, CodeQL 분석, Noema가 queued/in progress이고 bootstrap과 + manifest-pattern-coverage는 각각 success/skipped였다. GraphQL은 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, qualifying approval 0이며 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact From afbdeab866b7447f19ed87703773be5da65dd1c3 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 10:12:31 +0900 Subject: [PATCH 088/115] docs: record dependency PR verification --- docs/product-technical-gap-baseline.md | 34 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 19a66e9a..0c8791a5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `b0fc6660`은 기준선 갱신 push 뒤 Checks 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #608 `f52d0930`과 #610 `bd538f05`도 새 HEAD Checks 재실행 중이며 qualifying approval 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `aa6aa2dd`는 기준선 갱신 push 뒤 Checks 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #602 `d9aa1af2`, #608 `f52d0930`, #610 `bd538f05`는 기능·보안 Checks가 수렴했거나 수렴 중이나 OpenCode verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -138,11 +138,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 취약점 0건이었고 unit, config 3개, docstring, fuzz 14개, 전체 Playwright 79개, coverage, `git diff --check`가 로컬에서 통과했다. coverage는 total lines 44.60%/functions 33.76%/branches 81.84%였다. 새 HEAD hosted - inventory는 bootstrap·close-empty·manifest/취소 계열만 terminal이고 - coverage-source-tree, OSV, Trivy-FS, dependency-review, unit/API, - Scorecard, cloud-E2E, property fuzz, Semgrep, CodeQL 분석, Noema가 - queued/in progress다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, - current-head APPROVED 0, unresolved thread 0이다. + functional/security/coverage/unit/API/cloud-E2E/fuzz/Noema Checks는 + terminal success 또는 expected neutral/skipped였고, OpenCode check + `99027046238`은 current-head verdict 부재로 실패했다. Strix run + `33225073972`는 취소됐고 artifact가 없어 authoritative clean report가 + 없다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head + APPROVED 0, unresolved thread 0이다. - #610: `develop@2c328875` 대상 `bd538f05df8203577a980bd7f56af1fab4040018`. CodeGraph로 `ZERO_VALID_FIELDS`와 편집/저장·외부 `wbs.json`·JSON sync·CSV export 호출 경로를 대조해 numeric zero 보존 구현에는 추가 결함이 없음을 @@ -151,10 +152,23 @@ HEAD가 바뀌면 다시 확인해야 한다. zero 회귀 E2E 12개, unit, config 3개, docstring, fuzz 14개, 전체 Playwright 88개, API/coverage, `git diff --check`가 통과했다. coverage는 total lines 44.44%/functions 33.76%/branches 81.76%였다. 새 HEAD - hosted Checks는 dependency-review와 close-empty를 제외한 required - workflow들이 queued/in progress이며, GraphQL은 - `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, - unresolved thread 0이다. + functional/security/coverage/unit/API/cloud-E2E/fuzz/Noema Checks는 + terminal success 또는 expected neutral/skipped였고, OpenCode check + `99027884603`은 current-head verdict 부재로 실패했다. Strix run + `33225351531`은 취소됐고 artifact가 없어 authoritative clean report가 + 없다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head + APPROVED 0, unresolved thread 0이다. +- #602: `develop@2c328875` 대상 `d9aa1af26dc860894ad39f8383b5a545e0e7eb40`. + CodeGraph에서 Hono 소비 경로를 확인했으며 변경은 `package.json`과 + lockfile의 4.13.0→4.13.5 갱신뿐이다. exact HEAD에서 기존 preload E2E + 실패를 재현해 `index.html`에 `cloud-sync.js`·`analytics.js` preload 두 줄을 + 추가했다. `npm ci`는 취약점 0건, unit, config 3개, docstring, fuzz 14개, + 전체 Playwright 76개, API/coverage, `git diff --check`가 통과했다. + coverage는 total lines 44.47%/functions 33.76%/branches 81.76%였다. + 새 HEAD의 OSV Scanner는 success, Scorecard/OSV scanner는 neutral이고 + 나머지 required workflow는 queued/in progress이며 Strix workflow는 + pending이다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + current-head APPROVED 0, unresolved thread 0이다. - #625: `develop@2c328875` 대상 `b0fc6660a51441e738a7beaff81f0822aade4d06`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 반영했다. 이 HEAD에서는 coverage-source-tree, OSV, Trivy-FS, From 1b3cdfaabd4e0d8f871aa6764095c0b3b01ab592 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 10:50:50 +0900 Subject: [PATCH 089/115] docs: refresh current PR evidence --- docs/product-technical-gap-baseline.md | 51 +++++++++++++------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0c8791a5..f01a7317 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `aa6aa2dd`는 기준선 갱신 push 뒤 Checks 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #602 `d9aa1af2`, #608 `f52d0930`, #610 `bd538f05`는 기능·보안 Checks가 수렴했거나 수렴 중이나 OpenCode verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `a154cf1d`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -144,7 +144,7 @@ HEAD가 바뀌면 다시 확인해야 한다. `33225073972`는 취소됐고 artifact가 없어 authoritative clean report가 없다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. -- #610: `develop@2c328875` 대상 `bd538f05df8203577a980bd7f56af1fab4040018`. +- #610: `develop@2c328875` 대상 `4c965cb04a9ae5d970b7d61afcbb8caf32197d06`. CodeGraph로 `ZERO_VALID_FIELDS`와 편집/저장·외부 `wbs.json`·JSON sync·CSV export 호출 경로를 대조해 numeric zero 보존 구현에는 추가 결함이 없음을 확인했다. 기존 develop의 modulepreload 계약 누락이 전체 E2E에서 재현되어 @@ -169,14 +169,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 나머지 required workflow는 queued/in progress이며 Strix workflow는 pending이다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. -- #625: `develop@2c328875` 대상 `b0fc6660a51441e738a7beaff81f0822aade4d06`. +- #625: `develop@2c328875` 대상 `afbdeab866b7447f19ed87703773be5da65dd1c3`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 - 반영했다. 이 HEAD에서는 coverage-source-tree, OSV, Trivy-FS, - dependency-review, unit/API, Scorecard, cloud-E2E, property fuzz, - Semgrep, CodeQL 분석, Noema가 queued/in progress이고 bootstrap과 - manifest-pattern-coverage는 각각 success/skipped였다. GraphQL은 - `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, - qualifying approval 0이며 병합하지 않았다. + 반영했다. 이 HEAD의 일반 required Checks는 success 또는 expected + neutral/skipped로 수렴했고, OpenCode는 current-head verdict 부재로 + fail-closed 되었다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + unresolved thread 0, qualifying approval 0이며 병합하지 않았다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 @@ -258,24 +256,25 @@ HEAD가 바뀌면 다시 확인해야 한다. 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. exact-head hosted functional/security Checks는 통과했지만 OpenCode는 현재 head verdict 부재로 fail-closed 되었고 qualifying approval은 없다. -- #587: `c542615f3746ca365a51711e91ffec3477a5025e` (base - `develop@2c328875`). 직접 소비 가능한 - `application_routes_core.mjs`가 오래된 첫 `x-forwarded-for` 기반 limiter를 - 사용하던 경계를 제거하고, `server/rate_limit.mjs`의 설정 검증·trusted - transport peer·bucket 상한을 공유하도록 했다. ordinary/429 request logger의 - invite/share bearer path leak은 공통 redaction으로 차단했고, OIDC guard - accounting probe와 대소문자 비구분 기존 계정 재사용을 보강했다. 배포 문서의 - `ORCHESTRATOR_TOKEN`과 contextual-orchestrator 설정 키 관계도 명확히 했다. - direct-core rate-limit, OIDC production boundary, 전체 API/unit 및 config 3개가 - 로컬 통과했으며, exact-head hosted functional/security Checks는 통과했지만 - OpenCode는 current-head verdict 부재로 fail-closed 되었고 qualifying approval은 - 없다. -- #596: `develop@2c328875` 대상 `50f0c2d18e4361e5f11507ca194c94fc7caabbdc`. +- #587: `a154cf1d6943766f7332de3af93b394ff1a31721` (base + `develop@2c328875`). `application_routes_core.mjs`의 오래된 첫 + `x-forwarded-for` limiter 경계를 제거하고 `server/rate_limit.mjs`의 + trusted transport peer·bucket 상한을 공유한 뒤, current-head 재검토에서 + 발견된 Unicode 이메일 migration, scoped IPv6, OIDC discovery endpoint, + development-mode production SSO, OIDC signup accounting, dependency-review + merge-base 결함을 최소 수정했다. 마지막으로 signup metric을 의존성 없는 + `server/signup_metrics.mjs`로 분리해 inner limiter가 비활성화 구간에서 + 평가되도록 했다. exact head에서 API, unit, coverage, config 3개, docstring, + fuzz 14개, 전체 Playwright 76개가 로컬 통과했다. hosted 일반 Checks는 + 수렴 중이며 OpenCode는 current-head verdict 부재로 fail-closed, Strix는 + 실행 중이고 qualifying approval은 없다. +- #596: `develop@2c328875` 대상 `86210691e4be647426766ea6aea838cafecb69e7`. provider diagnostic sanitization과 bounded/cancelled response handling을 - current CodeGraph·resolved 리뷰와 대조했고 orchestrator unit·coverage· - attribution focused tests가 통과했다. hosted 보안·테스트·OpenCode·Strix· - Devin Checks는 통과했지만 `REVIEW_REQUIRED`이고 qualifying approval이 없어 - 병합하지 않았다. + current CodeGraph·resolved 리뷰와 대조했고 orchestrator attribution focused + tests, API/unit/coverage 및 전체 Playwright 76개가 통과했다. hosted 일반 + required Checks는 success 또는 expected neutral/skipped이고, OpenCode는 + current-head verdict 부재로 fail-closed 되었으며 qualifying approval이 + 없어 병합하지 않았다. - #550: `9267d2d7686ea7891591a600187ebc21428b13ba` (base `develop@2c328875`). 로컬 CSV와 cloud 조직·캘린더·감사 로그 다운로드가 공유된 안전한 임시 앵커 경로를 사용하고, 설정·click·cleanup·URL revoke From f1324e3b43ad15883f9c486add00e89d98be3ed0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 11:03:25 +0900 Subject: [PATCH 090/115] docs: refresh security PR baseline head --- docs/product-technical-gap-baseline.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index f01a7317..82a160a5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `a154cf1d`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -256,7 +256,7 @@ HEAD가 바뀌면 다시 확인해야 한다. 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. exact-head hosted functional/security Checks는 통과했지만 OpenCode는 현재 head verdict 부재로 fail-closed 되었고 qualifying approval은 없다. -- #587: `a154cf1d6943766f7332de3af93b394ff1a31721` (base +- #587: `7430bb2b64e442f6b218d09c5bfa894ea3f2ceb9` (base `develop@2c328875`). `application_routes_core.mjs`의 오래된 첫 `x-forwarded-for` limiter 경계를 제거하고 `server/rate_limit.mjs`의 trusted transport peer·bucket 상한을 공유한 뒤, current-head 재검토에서 @@ -264,10 +264,12 @@ HEAD가 바뀌면 다시 확인해야 한다. development-mode production SSO, OIDC signup accounting, dependency-review merge-base 결함을 최소 수정했다. 마지막으로 signup metric을 의존성 없는 `server/signup_metrics.mjs`로 분리해 inner limiter가 비활성화 구간에서 - 평가되도록 했다. exact head에서 API, unit, coverage, config 3개, docstring, - fuzz 14개, 전체 Playwright 76개가 로컬 통과했다. hosted 일반 Checks는 - 수렴 중이며 OpenCode는 current-head verdict 부재로 fail-closed, Strix는 - 실행 중이고 qualifying approval은 없다. + 평가되도록 하고, legacy development mock SSO도 동일한 signup hook을 + 사용하도록 보강했다. exact head에서 security-guard, smoke, OIDC 회귀가 + 통과했으며, API, unit, coverage, config 3개, docstring, fuzz 14개, 전체 + Playwright 76개는 직전 shared-metric 수정 HEAD에서 로컬 통과했다. hosted + 일반 Checks는 수렴 중이며 OpenCode는 current-head verdict 부재로 + fail-closed, Strix는 실행 중이고 qualifying approval은 없다. - #596: `develop@2c328875` 대상 `86210691e4be647426766ea6aea838cafecb69e7`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator attribution focused From a5646043dbcceed7ce3778da81385afca2ae0222 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 11:10:48 +0900 Subject: [PATCH 091/115] docs: record Unicode invite fix --- docs/product-technical-gap-baseline.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 82a160a5..486f27a4 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `f8baae8b`는 Unicode invite identity 회귀를 수정한 뒤 Checks 재실행 대기·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -352,14 +352,14 @@ HEAD가 바뀌면 다시 확인해야 한다. `98670001775`는 OpenRouter unavailable 및 OpenAI 429 quota exhaustion으로 structured report 없이 fail-closed 되었고, qualifying approval도 없다. - #593: `develop@2c328875` 대상 - `a7bc39d16fe5240832ef08f0ee80e9c64dea7181`. pending invite roster에서 bearer + `f8baae8b9c3a453bd5796401ad95c1601227127e`. pending invite roster에서 bearer token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 초대를 수락하도록 했다. malformed invite/share path도 structured request - log에서 token segment를 redaction한다. 전용 invite identity 보안 회귀, - 전체 unit/API, config 3개가 로컬 통과했고, hosted 기능·보안·fuzz·coverage· - cloud·SAST·dependency/OSV Checks는 통과했다. Scorecard·Trivy·OSV scanner는 - neutral이고 OpenCode는 current-head verdict 부재로 fail-closed 되었으며, - review threads는 0이지만 qualifying approval은 없다. + log에서 token segment를 redaction한다. SQLite ASCII-only `lower()` 때문에 + Unicode mailbox가 정상 계정과 매칭되지 않던 결함을 JavaScript canonicalization과 + 회귀 테스트로 수정했다. 전용 invite identity 보안 회귀, 전체 unit/API, config + 3개가 로컬 통과했고, 이 push 뒤 hosted 기능·보안·fuzz·coverage·cloud·SAST· + dependency/OSV Checks는 재실행 대기 중이다. qualifying approval은 없다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From 123623e1a879fbcb85b1529c21e92f0168f46b64 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 11:29:06 +0900 Subject: [PATCH 092/115] docs: refresh exact PR queue heads --- docs/product-technical-gap-baseline.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 486f27a4..3a843dba 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `f8baae8b`는 Unicode invite identity 회귀를 수정한 뒤 Checks 재실행 대기·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `afbdeab8`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `a5646043`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -169,7 +169,7 @@ HEAD가 바뀌면 다시 확인해야 한다. 나머지 required workflow는 queued/in progress이며 Strix workflow는 pending이다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. -- #625: `develop@2c328875` 대상 `afbdeab866b7447f19ed87703773be5da65dd1c3`. +- #625: `develop@2c328875` 대상 `a5646043dbcceed7ce3778da81385afca2ae0222`. 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 반영했다. 이 HEAD의 일반 required Checks는 success 또는 expected neutral/skipped로 수렴했고, OpenCode는 current-head verdict 부재로 @@ -248,7 +248,7 @@ HEAD가 바뀌면 다시 확인해야 한다. functional/security/fuzz/coverage Checks는 통과했지만 OpenCode job `98995709958`은 current-head verdict 부재로 fail-closed 되었고 qualifying approval도 없어 병합하지 않았다. -- #608: `28a217891bba7c515b93755ba6593f476b6a9adc` (base +- #608: `f52d093069490c15eb525690774786d4fabb267d` (base `develop@2c328875`). 빈 상태 task-dependent action의 정적 초기 markup에도 native `disabled`, `aria-disabled`, `aria-describedby`를 설정해 seed/cloud hydration 중 빈 CSV export와 빈 Gantt 진입 race를 fail-closed로 막았다. @@ -352,14 +352,16 @@ HEAD가 바뀌면 다시 확인해야 한다. `98670001775`는 OpenRouter unavailable 및 OpenAI 429 quota exhaustion으로 structured report 없이 fail-closed 되었고, qualifying approval도 없다. - #593: `develop@2c328875` 대상 - `f8baae8b9c3a453bd5796401ad95c1601227127e`. pending invite roster에서 bearer + `2ce9f1dab362ef208d1fc68e8c7b6df815f1b3b7`. pending invite roster에서 bearer token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 초대를 수락하도록 했다. malformed invite/share path도 structured request log에서 token segment를 redaction한다. SQLite ASCII-only `lower()` 때문에 - Unicode mailbox가 정상 계정과 매칭되지 않던 결함을 JavaScript canonicalization과 - 회귀 테스트로 수정했다. 전용 invite identity 보안 회귀, 전체 unit/API, config - 3개가 로컬 통과했고, 이 push 뒤 hosted 기능·보안·fuzz·coverage·cloud·SAST· - dependency/OSV Checks는 재실행 대기 중이다. qualifying approval은 없다. + Unicode mailbox가 정상 계정과 매칭되지 않던 결함을 NFKC·Unicode case-fold + canonicalization과 SQLite deterministic expression index로 수정했다. Greek + sigma 양방향 회귀를 포함한 전용 invite identity 보안 회귀, 전체 unit/API, + coverage, config 3개, docstring check가 로컬 통과했고, 이 push 뒤 hosted + 기능·보안·fuzz·coverage·cloud·SAST·dependency/OSV Checks는 진행 중이다. + 리뷰 스레드는 0개지만 qualifying approval은 없다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From 56d67e0e449b69c4f544fd227479414d8d51ca26 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 11:56:41 +0900 Subject: [PATCH 093/115] docs: refresh numeric zero PR evidence --- docs/product-technical-gap-baseline.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3a843dba..71f237b1 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -149,13 +149,14 @@ HEAD가 바뀌면 다시 확인해야 한다. export 호출 경로를 대조해 numeric zero 보존 구현에는 추가 결함이 없음을 확인했다. 기존 develop의 modulepreload 계약 누락이 전체 E2E에서 재현되어 `index.html`에 동일한 preload 두 줄만 추가했다. `npm ci`는 취약점 0건, - zero 회귀 E2E 12개, unit, config 3개, docstring, fuzz 14개, 전체 + zero 회귀 E2E 13개, unit, config 3개, docstring, fuzz 14개, 전체 Playwright 88개, API/coverage, `git diff --check`가 통과했다. coverage는 total lines 44.44%/functions 33.76%/branches 81.76%였다. 새 HEAD functional/security/coverage/unit/API/cloud-E2E/fuzz/Noema Checks는 - terminal success 또는 expected neutral/skipped였고, OpenCode check - `99027884603`은 current-head verdict 부재로 실패했다. Strix run - `33225351531`은 취소됐고 artifact가 없어 authoritative clean report가 + terminal success 또는 expected neutral/skipped로 수렴했다. OpenCode run + `33226611815`의 check `99031566352`는 current-head verdict 부재로 + fail-closed되었다. Strix run `33226611816`은 취소됐고 artifact가 없어 + authoritative clean report가 없다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. - #602: `develop@2c328875` 대상 `d9aa1af26dc860894ad39f8383b5a545e0e7eb40`. From 664b501e122a810790755466cf40855337bddc97 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 11:57:48 +0900 Subject: [PATCH 094/115] docs: separate live PR evidence from predecessor --- docs/product-technical-gap-baseline.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 71f237b1..be43b029 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625 `a5646043`는 기준선 갱신 push 뒤 Checks가 수렴했지만 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -170,12 +170,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 나머지 required workflow는 queued/in progress이며 Strix workflow는 pending이다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. -- #625: `develop@2c328875` 대상 `a5646043dbcceed7ce3778da81385afca2ae0222`. - 기준선 문서에 #587의 exact-head 보안·운영 수정과 현재 승인/게이트 상태를 - 반영했다. 이 HEAD의 일반 required Checks는 success 또는 expected - neutral/skipped로 수렴했고, OpenCode는 current-head verdict 부재로 - fail-closed 되었다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, - unresolved thread 0, qualifying approval 0이며 병합하지 않았다. +- #625 predecessor evidence: `develop@2c328875` 대상 + `a5646043dbcceed7ce3778da81385afca2ae0222`. 기준선 문서에 #587의 + exact-head 보안·운영 수정과 당시 승인/게이트 상태를 반영했다. 이 문단은 + 문서 갱신 전 마지막으로 검증한 predecessor에 대한 immutable evidence다. + 현재 #625 PR HEAD와 새로 실행된 Checks·리뷰 상태는 문서 commit에 자기 + SHA를 삽입하지 않고 GitHub live PR metadata에서 재확인해야 한다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 From 7c4a88f24a44aa21ca63ef25726a2c6a3564b6a4 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 12:20:26 +0900 Subject: [PATCH 095/115] docs: refresh accessibility PR evidence --- docs/product-technical-gap-baseline.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index be43b029..a47c449f 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f52d0930`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -129,7 +129,7 @@ HEAD가 바뀌면 다시 확인해야 한다. manifest-pattern-coverage 스킵이 있었고, central OpenCode/Strix run은 이 stacked head에 붙지 않았다. 전체 Devin thread는 해결됐지만 qualifying approval은 없다. -- #608: `develop@2c328875` 대상 `f52d093069490c15eb525690774786d4fabb267d`. +- #608: `develop@2c328875` 대상 `f705a9589e64ddf4919157ebccce9d897f8ac744`. 네이티브 `disabled`로 전환한 빈 상태 CSV/Gantt 동작을 CodeGraph의 `renderAll()` 경로와 대조했다. 기존 저장소 E2E가 요구하는 `cloud-sync.js`·`analytics.js` modulepreload 누락과, 제거된 title tooltip을 @@ -140,10 +140,11 @@ HEAD가 바뀌면 다시 확인해야 한다. lines 44.60%/functions 33.76%/branches 81.84%였다. 새 HEAD hosted functional/security/coverage/unit/API/cloud-E2E/fuzz/Noema Checks는 terminal success 또는 expected neutral/skipped였고, OpenCode check - `99027046238`은 current-head verdict 부재로 실패했다. Strix run - `33225073972`는 취소됐고 artifact가 없어 authoritative clean report가 - 없다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head - APPROVED 0, unresolved thread 0이다. + `99041832603`은 current-head verdict 부재로 fail-closed 되었다. Strix check + `99041995720`도 provider/backend 불가로 authoritative vulnerability analysis를 + 완료하지 못해 fail-closed 되었고 clean report를 증거로 승격하지 않았다. + GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, + unresolved thread 0이다. - #610: `develop@2c328875` 대상 `4c965cb04a9ae5d970b7d61afcbb8caf32197d06`. CodeGraph로 `ZERO_VALID_FIELDS`와 편집/저장·외부 `wbs.json`·JSON sync·CSV export 호출 경로를 대조해 numeric zero 보존 구현에는 추가 결함이 없음을 @@ -249,14 +250,15 @@ HEAD가 바뀌면 다시 확인해야 한다. functional/security/fuzz/coverage Checks는 통과했지만 OpenCode job `98995709958`은 current-head verdict 부재로 fail-closed 되었고 qualifying approval도 없어 병합하지 않았다. -- #608: `f52d093069490c15eb525690774786d4fabb267d` (base +- #608: `f705a9589e64ddf4919157ebccce9d897f8ac744` (base `develop@2c328875`). 빈 상태 task-dependent action의 정적 초기 markup에도 native `disabled`, `aria-disabled`, `aria-describedby`를 설정해 seed/cloud hydration 중 빈 CSV export와 빈 Gantt 진입 race를 fail-closed로 막았다. focused accessibility E2E 4개, 관련 unit 6개, 전체 unit 및 config 3개가 통과했으며, 기존 modulepreload baseline 실패는 #490 범위로 섞지 않았다. - exact-head hosted functional/security Checks는 통과했지만 OpenCode는 현재 - head verdict 부재로 fail-closed 되었고 qualifying approval은 없다. + exact-head hosted functional/security Checks는 통과했지만 OpenCode check + `99041832603`은 current-head verdict 부재로, Strix check `99041995720`은 + provider/backend 불가로 fail-closed 되었고 qualifying approval은 없다. - #587: `7430bb2b64e442f6b218d09c5bfa894ea3f2ceb9` (base `develop@2c328875`). `application_routes_core.mjs`의 오래된 첫 `x-forwarded-for` limiter 경계를 제거하고 `server/rate_limit.mjs`의 From 28f2c1f070c51841b8be372f777a4ff7eb5ee8d1 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 12:40:21 +0900 Subject: [PATCH 096/115] docs: refresh invite identity evidence --- docs/product-technical-gap-baseline.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index a47c449f..b8ad1974 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `2ce9f1da`는 Unicode case-fold와 indexed invite identity 회귀를 보강한 뒤 hosted Checks 진행 중·qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 전체 Unicode C+F case-fold와 Node 23.5 런타임 경계를 보강한 뒤 hosted Checks가 수렴 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -355,16 +355,20 @@ HEAD가 바뀌면 다시 확인해야 한다. `98670001775`는 OpenRouter unavailable 및 OpenAI 429 quota exhaustion으로 structured report 없이 fail-closed 되었고, qualifying approval도 없다. - #593: `develop@2c328875` 대상 - `2ce9f1dab362ef208d1fc68e8c7b6df815f1b3b7`. pending invite roster에서 bearer + `27e581a7298b9faa309d9c838e1f5f05d3c0f355`. pending invite roster에서 bearer token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 초대를 수락하도록 했다. malformed invite/share path도 structured request log에서 token segment를 redaction한다. SQLite ASCII-only `lower()` 때문에 - Unicode mailbox가 정상 계정과 매칭되지 않던 결함을 NFKC·Unicode case-fold - canonicalization과 SQLite deterministic expression index로 수정했다. Greek - sigma 양방향 회귀를 포함한 전용 invite identity 보안 회귀, 전체 unit/API, - coverage, config 3개, docstring check가 로컬 통과했고, 이 push 뒤 hosted - 기능·보안·fuzz·coverage·cloud·SAST·dependency/OSV Checks는 진행 중이다. - 리뷰 스레드는 0개지만 qualifying approval은 없다. + Unicode mailbox가 정상 계정과 매칭되지 않던 결함을 NFKC와 고정된 Unicode + 17.0.0 C+F case-fold map, SQLite deterministic expression index로 수정했다. + Node 23.4.x를 `db.function()` 미지원 범위로 제외하고 U+0345/U+03B9 invite + acceptance 회귀를 추가했다. Greek 및 combining-iota invite 회귀, 전체 + unit/API, coverage, config 3개, docstring check는 로컬 통과했다. 전체 + Playwright는 75/76 통과했으며 유일한 실패는 develop 기준선의 + `modulepreload` 기대다. 이 exact HEAD의 hosted inventory는 9개 run이 + 진행 중이고 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying + approval 0, unresolved thread 0이다. Strix는 진행 중이며 OpenCode current + verdict는 아직 inventory에 없다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From a52f73fe18debeac9edb74b04f278430b5cce2f6 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 12:44:08 +0900 Subject: [PATCH 097/115] docs: record current hosted gate status --- docs/product-technical-gap-baseline.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b8ad1974..9b291879 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -365,10 +365,12 @@ HEAD가 바뀌면 다시 확인해야 한다. acceptance 회귀를 추가했다. Greek 및 combining-iota invite 회귀, 전체 unit/API, coverage, config 3개, docstring check는 로컬 통과했다. 전체 Playwright는 75/76 통과했으며 유일한 실패는 develop 기준선의 - `modulepreload` 기대다. 이 exact HEAD의 hosted inventory는 9개 run이 - 진행 중이고 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying - approval 0, unresolved thread 0이다. Strix는 진행 중이며 OpenCode current - verdict는 아직 inventory에 없다. + `modulepreload` 기대다. 이 exact HEAD의 hosted functional/security/coverage + inventory는 terminal success 또는 expected neutral/skipped로 수렴했고, + OpenCode check `99046080277`은 current-head verdict 부재로 fail-closed되었다. + Strix check `99046034698`은 아직 진행 중이며 authoritative report가 없다. + GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying + approval 0, unresolved thread 0이다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From b6756a960b37335cf9d165444b3ef8f0348d3a61 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 12:48:49 +0900 Subject: [PATCH 098/115] docs: link Unicode identity policy evidence --- docs/product-technical-gap-baseline.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 9b291879..17da6df9 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 전체 Unicode C+F case-fold와 Node 23.5 런타임 경계를 보강한 뒤 hosted Checks가 수렴 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `d9aa1af2`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 functional/security Checks가 수렴했지만 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -576,6 +576,9 @@ management—Earned value management*. https://www.iso.org/standard/87899.html World Wide Web Consortium. (2024). *Web Content Accessibility Guidelines (WCAG) 2.2*. https://www.w3.org/TR/WCAG22/ +Unicode Consortium. (2025). *Unicode 17.0.0: CaseFolding.txt*. +https://www.unicode.org/Public/17.0.0/ucd/CaseFolding.txt + Souppaya, M., Scarfone, K., & Dodson, D. (2022). *Secure software development framework (SSDF) version 1.1: Recommendations for mitigating the risk of software vulnerabilities* (NIST Special Publication 800-218). National Institute From f2a3c2cb1088a1de1fbe37b4f27eb4d8a45ad0a5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 12:52:23 +0900 Subject: [PATCH 099/115] docs: record Strix provider failure evidence --- docs/product-technical-gap-baseline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 17da6df9..0e371d71 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 functional/security Checks가 수렴했지만 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 functional/security Checks가 수렴했지만 OpenCode가 current-head verdict 부재로 fail-closed, Strix run `33231891726`도 `openai/orchestrator/free` HTTP 500으로 authoritative report 없이 fail-closed되었으며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -368,9 +368,9 @@ HEAD가 바뀌면 다시 확인해야 한다. `modulepreload` 기대다. 이 exact HEAD의 hosted functional/security/coverage inventory는 terminal success 또는 expected neutral/skipped로 수렴했고, OpenCode check `99046080277`은 current-head verdict 부재로 fail-closed되었다. - Strix check `99046034698`은 아직 진행 중이며 authoritative report가 없다. - GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying - approval 0, unresolved thread 0이다. + Strix check `99046034698`도 provider HTTP 500으로 authoritative report 없이 + fail-closed되었다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + current-head qualifying approval 0, unresolved thread 0이다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From 25e245cfa2993fe47ce7dd5444dd316dc2e8ab72 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 13:10:31 +0900 Subject: [PATCH 100/115] docs: record invite coverage remediation --- docs/product-technical-gap-baseline.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 0e371d71..78452b67 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593 `27e581a7`는 functional/security Checks가 수렴했지만 OpenCode가 current-head verdict 부재로 fail-closed, Strix run `33231891726`도 `openai/orchestrator/free` HTTP 500으로 authoritative report 없이 fail-closed되었으며 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 현재 PR의 live HEAD/Checks도 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 live HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했으며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence @@ -354,7 +354,7 @@ HEAD가 바뀌면 다시 확인해야 한다. functional/security/coverage/fuzz Checks와 OpenCode는 통과했지만 Strix `98670001775`는 OpenRouter unavailable 및 OpenAI 429 quota exhaustion으로 structured report 없이 fail-closed 되었고, qualifying approval도 없다. -- #593: `develop@2c328875` 대상 +- #593 predecessor: `develop@2c328875` 대상 `27e581a7298b9faa309d9c838e1f5f05d3c0f355`. pending invite roster에서 bearer token을 제거하고, canonical email이 유일하며 인증 subject와 일치할 때만 초대를 수락하도록 했다. malformed invite/share path도 structured request @@ -369,8 +369,12 @@ HEAD가 바뀌면 다시 확인해야 한다. inventory는 terminal success 또는 expected neutral/skipped로 수렴했고, OpenCode check `99046080277`은 current-head verdict 부재로 fail-closed되었다. Strix check `99046034698`도 provider HTTP 500으로 authoritative report 없이 - fail-closed되었다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, - current-head qualifying approval 0, unresolved thread 0이다. + fail-closed되었다. 중앙 coverage run `33232630124`는 `server/db.mjs` 미계측과 + `server/email_identity.mjs` 5개 분기 중 4개 실행으로 실패했으며, 이는 + coverage include·누락 이메일 회귀를 추가한 새 HEAD `d3937e7d`에서 보완했다. + 새 HEAD의 hosted Checks는 재실행 중이며, predecessor의 GraphQL은 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying approval 0, + unresolved thread 0이었다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From 377d2a7b09af6f43c2be6498964c499a6c456bd7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 13:16:31 +0900 Subject: [PATCH 101/115] docs: distinguish baseline gate predecessors --- docs/product-technical-gap-baseline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 78452b67..d692b4fc 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 live HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했으며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | ### Exact-head queue evidence From cd197084e31e971016f48cd32633033ce6cc4d56 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 14:33:16 +0900 Subject: [PATCH 102/115] docs: record current Strix gate failure --- docs/product-technical-gap-baseline.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index d692b4fc..59ecafd6 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -92,6 +92,12 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | | G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 +`openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 +보고서를 만들지 못해 fail-closed되었다. 후속 status publication도 대상 저장소 +권한 부족으로 실패했다. 이는 저장소 코드의 발견이 아닌 중앙 provider·권한 장애이며, +보안 게이트를 성공으로 승격하지 않는다. + ### Exact-head queue evidence - #621: `develop@2c328875` 대상 From b4ade9e07cc703a00c1e9a1b36f589ba0409669c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:11:58 +0900 Subject: [PATCH 103/115] docs: reconcile latest guarded limiter evidence --- docs/product-technical-gap-baseline.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 59ecafd6..38eb5df9 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `7430bb2b`는 일반 Checks가 수렴 중이고 OpenCode가 current-head verdict 부재로 fail-closed, Strix 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `08d328b8`는 trusted-proxy limiter와 guard 순서의 current-head 회귀를 추가 검증했고 required Checks 5개와 Noema가 통과했지만 OpenCode는 formal current-head verdict 부재로 fail-closed, Strix는 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -265,7 +265,7 @@ HEAD가 바뀌면 다시 확인해야 한다. exact-head hosted functional/security Checks는 통과했지만 OpenCode check `99041832603`은 current-head verdict 부재로, Strix check `99041995720`은 provider/backend 불가로 fail-closed 되었고 qualifying approval은 없다. -- #587: `7430bb2b64e442f6b218d09c5bfa894ea3f2ceb9` (base +- #587: `08d328b8c338444e07e01a94746a822980747b3b` (base `develop@2c328875`). `application_routes_core.mjs`의 오래된 첫 `x-forwarded-for` limiter 경계를 제거하고 `server/rate_limit.mjs`의 trusted transport peer·bucket 상한을 공유한 뒤, current-head 재검토에서 @@ -275,9 +275,10 @@ HEAD가 바뀌면 다시 확인해야 한다. `server/signup_metrics.mjs`로 분리해 inner limiter가 비활성화 구간에서 평가되도록 하고, legacy development mock SSO도 동일한 signup hook을 사용하도록 보강했다. exact head에서 security-guard, smoke, OIDC 회귀가 - 통과했으며, API, unit, coverage, config 3개, docstring, fuzz 14개, 전체 - Playwright 76개는 직전 shared-metric 수정 HEAD에서 로컬 통과했다. hosted - 일반 Checks는 수렴 중이며 OpenCode는 current-head verdict 부재로 + 통과했으며, current head에서 wrong-identity invite의 첫 POST는 guard에서 + 404로 기록되고 같은 client의 두 번째 POST는 invite identity-row lookup 전에 + 429로 차단되는 회귀를 추가했다. API와 unit 전체도 통과했다. hosted required + Checks 5개와 Noema는 통과했지만 OpenCode는 current-head formal verdict 부재로 fail-closed, Strix는 실행 중이고 qualifying approval은 없다. - #596: `develop@2c328875` 대상 `86210691e4be647426766ea6aea838cafecb69e7`. provider diagnostic sanitization과 bounded/cancelled response handling을 From a49a879a7b1dcdec70b0b44180599a30df935089 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:19:09 +0900 Subject: [PATCH 104/115] docs: record current Strix provider outage --- docs/product-technical-gap-baseline.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 38eb5df9..ece3fd37 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `08d328b8`는 trusted-proxy limiter와 guard 순서의 current-head 회귀를 추가 검증했고 required Checks 5개와 Noema가 통과했지만 OpenCode는 formal current-head verdict 부재로 fail-closed, Strix는 실행 중이며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `08d328b8`는 trusted-proxy limiter와 guard 순서의 current-head 회귀를 추가 검증했고 required Checks 5개와 Noema가 통과했지만 OpenCode는 formal current-head verdict 부재로 fail-closed, Strix는 `openai/orchestrator/free` HTTP 500과 report 부재로 fail-closed되었으며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -98,6 +98,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 권한 부족으로 실패했다. 이는 저장소 코드의 발견이 아닌 중앙 provider·권한 장애이며, 보안 게이트를 성공으로 승격하지 않는다. +같은 날 #587의 current-head Strix run `33237523911`도 +`openai/orchestrator/free` 세 번의 HTTP 500으로 종료되었고, `strix-reports` +artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워크플로는 +`STRIX_PROVIDER_UNAVAILABLE`로 fail-closed했으며, 이는 코드 취약점 발견이 아닌 +중앙 provider/backend 장애다. + ### Exact-head queue evidence - #621: `develop@2c328875` 대상 @@ -279,7 +285,10 @@ HEAD가 바뀌면 다시 확인해야 한다. 404로 기록되고 같은 client의 두 번째 POST는 invite identity-row lookup 전에 429로 차단되는 회귀를 추가했다. API와 unit 전체도 통과했다. hosted required Checks 5개와 Noema는 통과했지만 OpenCode는 current-head formal verdict 부재로 - fail-closed, Strix는 실행 중이고 qualifying approval은 없다. + fail-closed, Strix run `33237523911`은 `openai/orchestrator/free` 세 번의 HTTP + 500과 report 부재로 `STRIX_PROVIDER_UNAVAILABLE` fail-closed 되었으며, + `strix-reports` artifact `9710489491`에도 권위 있는 취약점 보고서가 없다. + qualifying approval은 없다. - #596: `develop@2c328875` 대상 `86210691e4be647426766ea6aea838cafecb69e7`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator attribution focused From bd831064a11a2b132ebd6a15a920398d3060403b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:34:53 +0900 Subject: [PATCH 105/115] docs: record current PR 587 gate evidence --- docs/product-technical-gap-baseline.md | 29 +++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index ece3fd37..761a4a3d 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `08d328b8`는 trusted-proxy limiter와 guard 순서의 current-head 회귀를 추가 검증했고 required Checks 5개와 Noema가 통과했지만 OpenCode는 formal current-head verdict 부재로 fail-closed, Strix는 `openai/orchestrator/free` HTTP 500과 report 부재로 fail-closed되었으며 qualifying approval 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a5646043`이며 predecessor HEAD `f2a3c2cb`의 Strix `99047555382`는 scannable changed file 부재로 quick scan을 건너뛰고 success, OpenCode `99047563558`은 실패했고, 이후 기준선 갱신 HEAD에서는 Checks가 재실행 중이며 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema·Strix가 통과했지만 OpenCode formal current-head verdict과 qualifying approval이 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -98,11 +98,12 @@ HEAD가 바뀌면 다시 확인해야 한다. 권한 부족으로 실패했다. 이는 저장소 코드의 발견이 아닌 중앙 provider·권한 장애이며, 보안 게이트를 성공으로 승격하지 않는다. -같은 날 #587의 current-head Strix run `33237523911`도 +같은 날 #587 predecessor HEAD `08d328b8`의 Strix run `33237523911`은 `openai/orchestrator/free` 세 번의 HTTP 500으로 종료되었고, `strix-reports` artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워크플로는 `STRIX_PROVIDER_UNAVAILABLE`로 fail-closed했으며, 이는 코드 취약점 발견이 아닌 -중앙 provider/backend 장애다. +중앙 provider/backend 장애다. 이후 `f36eb24a`에서 유효한 current-head review +지적을 수정했고, 새 exact-head Strix는 성공했다. ### Exact-head queue evidence @@ -184,9 +185,12 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 pending이다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head APPROVED 0, unresolved thread 0이다. - #625 predecessor evidence: `develop@2c328875` 대상 - `a5646043dbcceed7ce3778da81385afca2ae0222`. 기준선 문서에 #587의 - exact-head 보안·운영 수정과 당시 승인/게이트 상태를 반영했다. 이 문단은 - 문서 갱신 전 마지막으로 검증한 predecessor에 대한 immutable evidence다. + `a49a879a7b1dcdec70b0b44180599a30df935089`. #587의 current-head Strix + provider 장애를 artifact 근거와 함께 기준선에 반영했다. 이 exact HEAD에서는 + required Checks 5개·Noema·Strix가 terminal success였고 OpenCode는 current-head + formal verdict 부재로 실패했으며, GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + unresolved thread 0, qualifying approval 0이었다. 이 문단은 문서 갱신 전 + 마지막으로 검증한 predecessor에 대한 immutable evidence다. 현재 #625 PR HEAD와 새로 실행된 Checks·리뷰 상태는 문서 commit에 자기 SHA를 삽입하지 않고 GitHub live PR metadata에서 재확인해야 한다. - #616: `develop@2c328875` 대상 @@ -271,7 +275,7 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 exact-head hosted functional/security Checks는 통과했지만 OpenCode check `99041832603`은 current-head verdict 부재로, Strix check `99041995720`은 provider/backend 불가로 fail-closed 되었고 qualifying approval은 없다. -- #587: `08d328b8c338444e07e01a94746a822980747b3b` (base +- #587: `f36eb24a7ab47b880a1115a0d978a6011fa26048` (base `develop@2c328875`). `application_routes_core.mjs`의 오래된 첫 `x-forwarded-for` limiter 경계를 제거하고 `server/rate_limit.mjs`의 trusted transport peer·bucket 상한을 공유한 뒤, current-head 재검토에서 @@ -284,11 +288,12 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 통과했으며, current head에서 wrong-identity invite의 첫 POST는 guard에서 404로 기록되고 같은 client의 두 번째 POST는 invite identity-row lookup 전에 429로 차단되는 회귀를 추가했다. API와 unit 전체도 통과했다. hosted required - Checks 5개와 Noema는 통과했지만 OpenCode는 current-head formal verdict 부재로 - fail-closed, Strix run `33237523911`은 `openai/orchestrator/free` 세 번의 HTTP - 500과 report 부재로 `STRIX_PROVIDER_UNAVAILABLE` fail-closed 되었으며, - `strix-reports` artifact `9710489491`에도 권위 있는 취약점 보고서가 없다. - qualifying approval은 없다. + Checks 5개·Noema·Strix는 통과했지만 OpenCode는 current-head formal verdict + 부재로 fail-closed 되었고 qualifying approval은 없다. current-head 수정은 + 공유 DB canonicalizer를 통한 trim/NFC/lower/NFC mailbox identity, direct + invite/mock OIDC 경계 재사용, production OIDC URLSearchParams UTF-8 전송과 + 환경 독립 regression을 포함한다. GraphQL은 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0이다. - #596: `develop@2c328875` 대상 `86210691e4be647426766ea6aea838cafecb69e7`. provider diagnostic sanitization과 bounded/cancelled response handling을 current CodeGraph·resolved 리뷰와 대조했고 orchestrator attribution focused From 5336ddd29d32a69221fa6267739fff0dd10655e7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:45:32 +0900 Subject: [PATCH 106/115] docs(gates): record pending current-head Strix --- docs/product-technical-gap-baseline.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 761a4a3d..c64d761b 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema·Strix가 통과했지만 OpenCode formal current-head verdict과 qualifying approval이 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 아직 `in_progress`, OpenCode formal current-head verdict과 qualifying approval이 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -103,7 +103,8 @@ HEAD가 바뀌면 다시 확인해야 한다. artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워크플로는 `STRIX_PROVIDER_UNAVAILABLE`로 fail-closed했으며, 이는 코드 취약점 발견이 아닌 중앙 provider/backend 장애다. 이후 `f36eb24a`에서 유효한 current-head review -지적을 수정했고, 새 exact-head Strix는 성공했다. +지적을 수정했고, 새 exact-head Strix run `33238662633`은 이 snapshot 시점에 +아직 `in_progress`여서 성공으로 확정할 수 없다. ### Exact-head queue evidence @@ -288,8 +289,9 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 통과했으며, current head에서 wrong-identity invite의 첫 POST는 guard에서 404로 기록되고 같은 client의 두 번째 POST는 invite identity-row lookup 전에 429로 차단되는 회귀를 추가했다. API와 unit 전체도 통과했다. hosted required - Checks 5개·Noema·Strix는 통과했지만 OpenCode는 current-head formal verdict - 부재로 fail-closed 되었고 qualifying approval은 없다. current-head 수정은 + Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 아직 `in_progress`이고, + OpenCode는 current-head formal verdict 부재로 fail-closed 되었으며 qualifying + approval은 없다. current-head 수정은 공유 DB canonicalizer를 통한 trim/NFC/lower/NFC mailbox identity, direct invite/mock OIDC 경계 재사용, production OIDC URLSearchParams UTF-8 전송과 환경 독립 regression을 포함한다. GraphQL은 From 7a18041cfe83491293f49c969b9bb1b3c9f6fad3 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:48:25 +0900 Subject: [PATCH 107/115] docs(gates): record Strix provider outage --- docs/product-technical-gap-baseline.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index c64d761b..e9e3e554 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 아직 `in_progress`, OpenCode formal current-head verdict과 qualifying approval이 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 `orchestrator/free` provider HTTP 500과 권위 있는 report 부재로 fail-closed되었고, OpenCode formal current-head verdict과 qualifying approval도 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -103,8 +103,10 @@ HEAD가 바뀌면 다시 확인해야 한다. artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워크플로는 `STRIX_PROVIDER_UNAVAILABLE`로 fail-closed했으며, 이는 코드 취약점 발견이 아닌 중앙 provider/backend 장애다. 이후 `f36eb24a`에서 유효한 current-head review -지적을 수정했고, 새 exact-head Strix run `33238662633`은 이 snapshot 시점에 -아직 `in_progress`여서 성공으로 확정할 수 없다. +지적을 수정했지만, 새 exact-head Strix run `33238662633`은 +`orchestrator/free` provider HTTP 500으로 세 차례 실패했고 권위 있는 취약점 +보고서를 만들지 못해 fail-closed되었다. `strix-reports` artifact는 +`9710851408`이다. ### Exact-head queue evidence @@ -289,9 +291,10 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 통과했으며, current head에서 wrong-identity invite의 첫 POST는 guard에서 404로 기록되고 같은 client의 두 번째 POST는 invite identity-row lookup 전에 429로 차단되는 회귀를 추가했다. API와 unit 전체도 통과했다. hosted required - Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 아직 `in_progress`이고, - OpenCode는 current-head formal verdict 부재로 fail-closed 되었으며 qualifying - approval은 없다. current-head 수정은 + Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 provider HTTP 500과 + 권위 있는 report 부재로 fail-closed되었고, OpenCode는 current-head formal + verdict 부재로 fail-closed 되었으며 qualifying approval은 없다. current-head + 수정은 공유 DB canonicalizer를 통한 trim/NFC/lower/NFC mailbox identity, direct invite/mock OIDC 경계 재사용, production OIDC URLSearchParams UTF-8 전송과 환경 독립 regression을 포함한다. GraphQL은 From 967747bca073d82d5a468afc011a938b6292f542 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 15:56:59 +0900 Subject: [PATCH 108/115] docs(security): scope UI sink evidence --- docs/product-technical-gap-baseline.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e9e3e554..df756cf2 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -582,9 +582,11 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 - `app.js`는 `new Function` 테스트 계약 때문에 top-level ESM import/export를 사용하지 않는다. - 입력은 신뢰 경계에서 길이·날짜·CSV 수식·JSON prototype pollution을 검증한다. - 확인된 앱 UI의 동적 텍스트 출력은 `textContent` 경로를 사용하고, - `innerHTML`은 cloud-sync의 상수 UI 템플릿으로 제한한다. `escapeHtml()`은 - 현재 호출 경로가 확인되지 않아 보안 근거로 세지 않는다. + `app.js`·`cloud-sync.js`에서 확인한 동적 UI 텍스트 출력은 `textContent` + 경로를 사용하고, 두 개의 `innerHTML`은 사용자 값이 보간되지 않는 + cloud-sync 정적 모달 템플릿이다. 이 파일 범위를 넘어선 전역 sink 안전성은 + 주장하지 않으며, `escapeHtml()`은 현재 호출 경로가 확인되지 않아 보안 + 근거로 세지 않는다. - 접근성은 레이블, landmark, keyboard focus, live status, disabled 상태, reduced motion을 최소 기준으로 삼는다. - 검증 명령은 `npm run test:unit`, `npm run test:api`, `npm run test:e2e`, From 51707c4af3aeebefe44cf31e55b501d54c648225 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 16:00:17 +0900 Subject: [PATCH 109/115] docs(gates): track current performance PR head --- docs/product-technical-gap-baseline.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index df756cf2..8ddae889 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -222,20 +222,17 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 통과했지만 OpenCode는 current-head verdict 부재로, Strix는 provider HTTP 500와 report 부재로 fail-closed 되었으며, `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. -- #495: `develop@2c328875` 대상 - `9cc7ecc204dafe3dafcb78b605455beb07bbce3b`. CodeGraph로 metadata-only - render 경계, owner/status DOM shell 재사용, row identity 보존과 badge - contrast 회귀를 대조했고 current review thread는 모두 resolved다. `npm ci` - 후 전체 unit, fuzz 14개, config 3개, docstring check, coverage/API cases와 - `git diff --check`가 통과했다. `app.js` coverage는 lines 25.69%/ - functions 15.57%/branches 70.14%, 전체 lines는 45.63%다. exact-head hosted - cloud-e2e report는 5,000-row protected-base median 5,815.2ms 대비 optimized - median 114.2ms, 98.04% 개선과 편집·progress·drag 회귀 통과를 기록했다. - local macOS benchmark는 같은 시나리오가 3분 timeout으로 종료되어 hosted - report를 성능 증거로 사용했다. OpenCode는 current-head verdict 부재로, - Strix run `33179685657`은 provider HTTP 500과 report artifact 부재로 - fail-closed되었다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying approval - 0건이므로 병합하지 않았다. +- #495: `develop@2c328875` 대상 current HEAD + `9c2cc0b9acf1d3ef234612088ab0fbdf108252f5`. 이전 `9cc7ecc2`의 hosted + 5,000-row benchmark는 predecessor evidence로만 보존한다. current HEAD는 + metadata-only render와 immutable badge shell을 유지하고, 분리된 + `test:e2e:performance`를 `server-tests.yml`에서 호출하도록 보완했다. + `node tests/unit/render-performance-base.test.mjs`는 7개가 통과했고, + current review thread는 모두 resolved다. current hosted unit-and-api와 + coverage-evidence는 통과했지만 cloud-e2e `99066880322`, Noema + `99066875444`, Strix `99066868349`는 아직 실행 중이며 OpenCode + `99066887261`은 실패했다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying + approval 0건이므로 병합하지 않았다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula From 8a9f57a5d7370c5715388eccc8fe294e4192a3bf Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 16:03:47 +0900 Subject: [PATCH 110/115] docs(gates): timestamp performance gate evidence --- docs/product-technical-gap-baseline.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 8ddae889..5ea6fb18 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -228,11 +228,12 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 metadata-only render와 immutable badge shell을 유지하고, 분리된 `test:e2e:performance`를 `server-tests.yml`에서 호출하도록 보완했다. `node tests/unit/render-performance-base.test.mjs`는 7개가 통과했고, - current review thread는 모두 resolved다. current hosted unit-and-api와 - coverage-evidence는 통과했지만 cloud-e2e `99066880322`, Noema - `99066875444`, Strix `99066868349`는 아직 실행 중이며 OpenCode - `99066887261`은 실패했다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying - approval 0건이므로 병합하지 않았다. + current review thread는 모두 resolved다. `2026-08-29T07:03:26Z` 재조회 + 기준 current hosted unit-and-api `99066880286`, coverage-evidence + `99066872980`, cloud-e2e `99066880322`(07:00:14Z), Noema + `99066875444`(07:00:27Z)는 성공했지만 Strix `99066868349`는 아직 + 실행 중이며 OpenCode `99066887261`은 실패했다. `MERGEABLE/BLOCKED/ + REVIEW_REQUIRED`, qualifying approval 0건이므로 병합하지 않았다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula From d37ca6ce4b0cfaddd63a0f8ee50a200443c96cbc Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 16:08:16 +0900 Subject: [PATCH 111/115] docs(gates): track benchmark contract fix --- docs/product-technical-gap-baseline.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 5ea6fb18..7bd46a94 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -223,17 +223,17 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 report 부재로 fail-closed 되었으며, `REVIEW_REQUIRED`/qualifying approval 부재로 병합하지 않았다. - #495: `develop@2c328875` 대상 current HEAD - `9c2cc0b9acf1d3ef234612088ab0fbdf108252f5`. 이전 `9cc7ecc2`의 hosted - 5,000-row benchmark는 predecessor evidence로만 보존한다. current HEAD는 + `03901604a894b459ca00f3aa9b0de4686bc55c60`. 이전 `9cc7ecc2`와 `9c2cc0b9`의 + hosted benchmark/Checks는 predecessor evidence로만 보존한다. current HEAD는 metadata-only render와 immutable badge shell을 유지하고, 분리된 - `test:e2e:performance`를 `server-tests.yml`에서 호출하도록 보완했다. - `node tests/unit/render-performance-base.test.mjs`는 7개가 통과했고, - current review thread는 모두 resolved다. `2026-08-29T07:03:26Z` 재조회 - 기준 current hosted unit-and-api `99066880286`, coverage-evidence - `99066872980`, cloud-e2e `99066880322`(07:00:14Z), Noema - `99066875444`(07:00:27Z)는 성공했지만 Strix `99066868349`는 아직 - 실행 중이며 OpenCode `99066887261`은 실패했다. `MERGEABLE/BLOCKED/ - REVIEW_REQUIRED`, qualifying approval 0건이므로 병합하지 않았다. + `test:e2e:performance`를 `server-tests.yml`에서 호출하며, benchmark script + 계약 정규식의 파일명·명령 끝 경계를 고정했다. `node + tests/unit/render-performance-base.test.mjs`는 7개가 통과했고 current review + thread는 모두 resolved다. `2026-08-29T07:07:21Z` 재조회 기준 current + hosted Server Tests `33240092661`, Noema `33240091741`, Strix + `33240091749`, OpenCode `33240091721`은 새 HEAD에서 queued/pending이며 + terminal 결론이 없다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying + approval 0건이므로 병합하지 않았다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula From 4641eec403ba45f63876c7d4b9e2091519ccfb1b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 16:32:48 +0900 Subject: [PATCH 112/115] docs: record current PR 625 gate evidence --- docs/product-technical-gap-baseline.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 7bd46a94..3438e273 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -196,6 +196,15 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 마지막으로 검증한 predecessor에 대한 immutable evidence다. 현재 #625 PR HEAD와 새로 실행된 Checks·리뷰 상태는 문서 commit에 자기 SHA를 삽입하지 않고 GitHub live PR metadata에서 재확인해야 한다. +- #625 current HEAD follow-up: `d37ca6ce4b0cfaddd63a0f8ee50a200443c96cbc`. + Strix run `33240137244`는 2026-08-29T07:18:54Z에 success로 끝났고 + `strix-reports` artifact `9711210448`은 변경 파일 중 scannable 대상이 없음을 + 기록했다. 같은 HEAD의 OpenCode dispatch run `33240769121`은 + `MODEL_OUTPUT_UNAVAILABLE`로 fail-closed되었으며, model pool이 + `contextual-orchestrator/orchestrator/free` 결과를 내지 못해 current-head + formal verdict를 게시하지 않았다. 이후 GraphQL은 + `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, qualifying approval + 0이고, 자동 병합 없이 targeted scheduler가 재평가했다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 From dc3a85a39e9b0f68e0c1f4d4347c1249086a2c33 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 16:38:21 +0900 Subject: [PATCH 113/115] docs: record current PR 495 gate evidence --- docs/product-technical-gap-baseline.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 3438e273..e5e71d52 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -243,6 +243,13 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 `33240091749`, OpenCode `33240091721`은 새 HEAD에서 queued/pending이며 terminal 결론이 없다. `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, qualifying approval 0건이므로 병합하지 않았다. +- #495 current-head follow-up: 같은 `03901604a894b459ca00f3aa9b0de4686bc55c60`의 + Strix run `33240091749` attempt 3은 2026-08-29T07:37:20Z에 실패했다. 세 번의 + `openai/orchestrator/free` HTTP 500 provider 오류 뒤 권위 있는 취약점 + 보고서 없이 `STRIX_PROVIDER_UNAVAILABLE`로 fail-closed되었고, + `strix-reports` artifact는 `9711421475`이다. OpenCode run `33240091721`도 + current-head verdict 부재로 실패했으며, GraphQL은 unresolved thread 0, + qualifying approval 0, `REVIEW_REQUIRED/BLOCKED`를 유지한다. - #468: `develop@2c328875` 대상 `815af8138df2454cea99ba1a4a384de4f55d6199`. editor validation의 submit 경계, 키보드·포인터 저장 재검증, `aria-disabled`/오류 설명 연결과 CSV formula From b23b88864b91566f902fd99f33c16d4090fdca2d Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 17:30:39 +0900 Subject: [PATCH 114/115] docs: record current PR gate evidence --- docs/product-technical-gap-baseline.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e5e71d52..bca3566a 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 `orchestrator/free` provider HTTP 500과 권위 있는 report 부재로 fail-closed되었고, OpenCode formal current-head verdict과 qualifying approval도 없음; #593은 coverage blocker를 수정한 새 HEAD `d3937e7d`를 푸시했으며 hosted Checks가 재실행 중이고 qualifying approval 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 `orchestrator/free` provider HTTP 500과 권위 있는 report 부재로 fail-closed되었고, OpenCode formal current-head verdict과 qualifying approval도 없음; #593 current HEAD `6afb53e0`는 revoke-token smoke fixture와 Cherokee case-folding regression을 보완했고 exact-head 기능·보안·coverage·fuzz·Noema는 통과했지만 Strix run `33242746503`은 세 번의 `orchestrator/free` provider HTTP 500과 artifact `9711990990`의 report 부재로 fail-closed되었고 OpenCode formal current-head verdict 및 qualifying approval도 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -205,6 +205,14 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 formal verdict를 게시하지 않았다. 이후 GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, unresolved thread 0, qualifying approval 0이고, 자동 병합 없이 targeted scheduler가 재평가했다. +- #625 subsequent current HEAD: `dc3a85a39e9b0f68e0c1f4d4347c1249086a2c33`. + Strix run `33241314322`는 2026-08-29T07:47:07Z에 success로 끝났고 + `strix-reports` artifact `9711523961`은 scannable changed file이 없음을 + 기록했다. 같은 HEAD에 대한 targeted OpenCode dispatch run `33241711171`은 + `contextual-orchestrator/orchestrator/free` model pool exhausted 및 + `MODEL_OUTPUT_UNAVAILABLE`로 fail-closed되었고, current-head formal verdict나 + approval을 게시하지 않았다. GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, + unresolved thread 0, qualifying approval 0이었다. - #616: `develop@2c328875` 대상 `b427cd455f41e7c09ae20fbbf400d42c4f61d4bf`. deterministic release-artifact manifest의 regular-file/no-symlink, bounded manifest read, SHA-256 및 @@ -415,6 +423,19 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 새 HEAD의 hosted Checks는 재실행 중이며, predecessor의 GraphQL은 `MERGEABLE/BLOCKED/REVIEW_REQUIRED`, current-head qualifying approval 0, unresolved thread 0이었다. +- #593 current HEAD: `6afb53e045fe216d837ccb905a1da46d3787f599`. + revoke-token smoke fixture가 초대 대상 계정의 실제 bearer token을 보존하고 + 폐기 후 동일 계정으로 수락하도록 수정했으며, Cherokee 대문자 범위를 + JavaScript lowercasing 전에 보존해 U+13A0/U+13EF/U+13F0/U+13F5 계열의 + 대소문자 표현이 같은 identity key를 만들도록 보강했다. API·unit 전체, + config 3개, diff 검사와 CodeGraph가 로컬 통과했고 Devin/CodeRabbit current + review 지적에는 수정 답글과 addressed 응답이 기록됐다. exact-head hosted functional, + security, coverage, fuzz, cloud E2E 및 Noema는 terminal success 또는 + expected neutral/skipped로 수렴했지만 Strix run `33242746503`은 세 번의 + `orchestrator/free` HTTP 500 뒤 `STRIX_PROVIDER_UNAVAILABLE`로 fail-closed되었고 + 권위 있는 report 없이 artifact `9711990990`만 생성했다. OpenCode는 + current-head verdict 부재로 fail-closed되었고, approval 0건이므로 병합하지 + 않았다. - #493: `develop@2c328875` 대상 `78f8b557cd2b9cab238af72304f0ed42e1557759`. CodeGraph로 Clearfolio production 설정의 fail-closed 경계, tenant HMAC 헤더의 redirect 재전송 From 35fa5f886770ba76a2312f19cd4d8eb30a714dcf Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 29 Aug 2026 18:03:12 +0900 Subject: [PATCH 115/115] docs: record PR 596 security rerun --- docs/product-technical-gap-baseline.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index bca3566a..55ead368 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -90,7 +90,7 @@ HEAD가 바뀌면 다시 확인해야 한다. | G-02 | 정적 사용자가 JSON을 회수하려면 파일 API에 의존 | #621 `5c6c2530`, `develop` 병합 대기 | 브라우저 JSON 다운로드와 계획 필드 보존 | | G-03 | 첫 방문자가 seed와 실제 계획을 혼동 | #624 `69eff955`가 #621에 병합됨, 현재 #621 `5c6c2530`, `develop` 병합 대기 | 샘플 안내, 숨김, 확인 가능한 빈 계획 전환 | | G-04 | 핵심 상태의 시각 회귀 증거 부족 | #629 `89fff38b`이 #621 `5c6c2530` 위에 제출됨, `develop` 병합 대기; Devin의 current-head 지적도 해결됨 | 실제 브라우저 screenshot과 WCAG 2.2 점검을 릴리스 증거에 포함 | -| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 `orchestrator/free` provider HTTP 500과 권위 있는 report 부재로 fail-closed되었고, OpenCode formal current-head verdict과 qualifying approval도 없음; #593 current HEAD `6afb53e0`는 revoke-token smoke fixture와 Cherokee case-folding regression을 보완했고 exact-head 기능·보안·coverage·fuzz·Noema는 통과했지만 Strix run `33242746503`은 세 번의 `orchestrator/free` provider HTTP 500과 artifact `9711990990`의 report 부재로 fail-closed되었고 OpenCode formal current-head verdict 및 qualifying approval도 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 `86210691`, #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | +| G-05 | PR 큐가 provider 실패와 승인 부재로 정지 | #587 `f36eb24a`는 trusted-proxy limiter와 guard 순서의 current-head 회귀, NFC mailbox canonicalization, OIDC form-body 전송을 검증했고 required Checks 5개·Noema는 통과했지만 Strix run `33238662633`은 `orchestrator/free` provider HTTP 500과 권위 있는 report 부재로 fail-closed되었고, OpenCode formal current-head verdict과 qualifying approval도 없음; #593 current HEAD `6afb53e0`는 revoke-token smoke fixture와 Cherokee case-folding regression을 보완했고 exact-head 기능·보안·coverage·fuzz·Noema는 통과했지만 Strix run `33242746503`은 세 번의 `orchestrator/free` provider HTTP 500과 artifact `9711990990`의 report 부재로 fail-closed되었고 OpenCode formal current-head verdict 및 qualifying approval도 없음; #621 `5c6c2530`은 Strix provider unavailable·OpenCode 실패; #625의 마지막 검증 predecessor는 `a49a879a`이며 required Checks 5개·Noema·Strix가 통과했지만 OpenCode current-head verdict과 qualifying approval 없음; #629 `89fff38b`는 stacked 제출본으로 exact-head hosted Checks가 통과했지만 독립 병합 대상이 아니며 qualifying approval 없음; #596 current HEAD `86210691`의 Strix rerun `33226164926` attempt 2도 provider HTTP 500 세 번과 artifact `9712365533`의 권위 있는 report 부재로 fail-closed되었고 OpenCode 실패 및 qualifying approval 없음; #602 `97721a98`, #608 `f705a958`, #610 `4c965cb0`는 기능·보안 Checks가 수렴했지만 OpenCode current-head verdict/qualifying approval이 없음 | 게이트를 약화하지 않고 로그·artifact·exact HEAD 재검증 | 2026-08-29 live-gate follow-up: #593의 current-head Strix run `33235086478`은 `openai/orchestrator/free` 연결 HTTP 500을 세 번 기록했고 권위 있는 취약점 @@ -326,8 +326,11 @@ artifact `9710489491`에는 권위 있는 취약점 보고서가 없었다. 워 current CodeGraph·resolved 리뷰와 대조했고 orchestrator attribution focused tests, API/unit/coverage 및 전체 Playwright 76개가 통과했다. hosted 일반 required Checks는 success 또는 expected neutral/skipped이고, OpenCode는 - current-head verdict 부재로 fail-closed 되었으며 qualifying approval이 - 없어 병합하지 않았다. + current-head verdict 부재로 fail-closed 되었다. 취소된 최초 Strix run을 + exact HEAD에서 rerun한 `33226164926` attempt 2도 세 번의 + `openai/orchestrator/free` HTTP 500과 artifact `9712365533`의 권위 있는 + report 부재로 `STRIX_PROVIDER_UNAVAILABLE` fail-closed 되었다. current-head + REST review에는 qualifying approval이 없어 병합하지 않았다. - #550: `9267d2d7686ea7891591a600187ebc21428b13ba` (base `develop@2c328875`). 로컬 CSV와 cloud 조직·캘린더·감사 로그 다운로드가 공유된 안전한 임시 앵커 경로를 사용하고, 설정·click·cleanup·URL revoke