You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit bfebc41
Browse filesBrowse the repository at this point in the historyBrowse files
상황:
기존 product-browser-webview2-evergreen은 Web 형식 archive를 verifier 내부에서 합성해 Local import를 확인했기 때문에, 실제 GitHub Pages에서 사용자가 편집·실행·강검증한 뒤 내려받은 파일이 설치형 제품에서 열리는 경로는 증명하지 못했다. 공개 Run의 접힌 노트북에서는 제품 설정 진입이 어려웠고, 이 문제는 선행 커밋 088a5df1에서 공용 SidebarTrigger를 복구한 뒤 Pages에 배포했다.
변경:
tests/product/verifyWebView2ProductSmoke.py가 CODARO_DEPLOYED_WEB_URL을 받으면 system Edge의 새 context로 공개 Day 1에 진입해 Hello Codaro 정답을 편집·실행하고 StrongCheckVerified Web 근거 저장 뒤 full learning archive를 다운로드한다. 같은 실행에서 설치형 Local WebView2가 파일을 import하고 root hash와 runtime tier, source evidence, 초안 reload, 재내보내기 payload를 검증한다. .github/workflows/pages.yml은 deploy job의 실제 page_url을 Windows 후속 job에 전달하고 report·공개 archive·screenshots·logs만 artifact로 올리며 cargo target은 cache에만 둔다. source contract는 배포 후 검증 배선과 경량 artifact 범위를 고정한다. testing SSOT와 Web Learning·Local Studio·Quality Release mainPlan은 실제 6-case 범위와 남은 차단 조건을 구분해 기록한다.
영향:
Pages가 성공적으로 배포된 뒤 공개 Web의 편집, browser strong check, IndexedDB evidence, archive download, 설치형 Local import, reload, re-export가 한 경로로 연결된다. 일반 CI의 환경변수 없는 5-case native smoke는 유지되고 Pages 후속 job에서만 공개 배포 case가 추가된다. Windows 10 22H2 Fixed Version, scheduler safety, 수동 보조기술, IME, 200%·400% 확대와 독립 학습 검수는 완료 처리하지 않았다.
검증:
main@088a5df1 Pages run 30245961496의 build와 deploy 성공을 확인했다. CODARO_DEPLOYED_WEB_URL=https://eddmpython.github.io/codaro/ 환경에서 uv run python -X utf8 tests/run.py gate product-browser-webview2-evergreen을 실행해 실제 Windows 11 WebView2 Edg/150.0.4078.99의 6/6 case를 통과했다. 공개 archive의 StrongCheckVerified Web event 1건, Local imported root hash 일치, runtimeTier web, reload draft 복원, 재내보내기 evidence 2건과 portable payload 보존을 확인했다. 공개 Web과 설치형 Local screenshot을 직접 확인했다. uv run pytest tests/surface/testProductSurfaceContract.py -q --tb=short는 23 passed, verifyPlanFactAudit.py는 70 readmes와 negative fixture 1건 기각으로 통과했다. root-clean, docs, Python compile, Pages YAML parse와 git diff --check도 통과했다.
|`service-readiness-audit`| surface | 기존 자동화와 문서 링크를 위한 `product-quality-audit` 호환 alias다. |
152
152
|`diagnostic-summary-contract`| fast | local diagnostic summary/export가 provider/runtime/package/frontend 실패 범주와 secret redaction 계약을 지키는지 확인한다. |
153
153
|`install-launcher-smoke`| release | repo-local launcher root에서 실제 `doctor`/`state show` CLI JSON, layout 생성, health check, rollback, exact artifact 설치 경계와 `cargo check`를 확인한다. |
154
-
|`product-browser-webview2-evergreen`| release | Windows의 실제 네이티브 launcher와 현재 WebView2 Evergreen에서 current-commit wheel을 격리 설치해 Local Home 900x640, Notebook 1024x768, Automation 1440x900, 테마·SNS·후원 dialog와 Web-origin 학습 작업의 Local 왕복을 확인한다. |
154
+
|`product-browser-webview2-evergreen`| release | Windows의 실제 네이티브 launcher와 현재 WebView2 Evergreen에서 current-commit wheel을 격리 설치해 Local Home 900x640, Notebook 1024x768, Automation 1440x900, 테마·SNS·후원 dialog와 Web-origin 학습 작업의 Local 왕복을 확인한다. `CODARO_DEPLOYED_WEB_URL`이 있으면 실제 배포 Web에서 편집·강검증·내보낸 파일까지 같은 설치본으로 왕복한다. |
155
155
|`runtime-recovery-contract`| fast | runtime worker crash, package preflight, uv 설치 실패, cell 실행 실패 복구 계약을 확인한다. |
156
156
|`runtime-recovery-browser`| surface | 브라우저에서 package install 실패가 셀 근처 복구 UX로 보이고 cell-call로 번지지 않는지 확인한다. |
-`theme-runtime-browser`는 Landing·Learn·Run·Local을 새 빌드한 Chromium에서 8개 격리 context로 연다. 저장한 light/dark가 반대 OS 선호보다 우선하는지, storage가 없는 system 모드가 실행 중 OS scheme 변경을 따라가는지, 토글 선택이 reload 뒤 유지되는지 확인한다. root와 Astryx scope의 resolved theme·color-scheme·canvas·`theme-color`, public/learningComfortable/studioDense, plum/blue/teal, reduced-motion의 fast/medium/slow 1ms를 함께 대조한다. 결과는 `output/test-runner/theme-runtime-browser/theme-runtime-report.json`에 현재 `gitHead`, browser version, case별 snapshot과 failure를 남긴다. 이 gate는 테마 런타임 계약만 증명하며 전체 viewport·contrast·keyboard·screen-reader·Firefox/WebKit/WebView2 matrix를 대신하지 않는다.
231
231
-`visual-accessibility-browser`는 locked Playwright 1.61.0의 Chromium·Firefox·WebKit에서 Landing·Learn·Web Run·Web 학습·Local Run 대표 12개 case를 320·390·900·1440px, light/dark로 연다. 공용 SNS 순서와 테마 토글, 가로 overflow, 이름 없는 control, 중복 ID, image alt, ARIA 참조, Pretendard·Space Grotesk·JetBrains Mono load, 핵심 text token 4.5:1 contrast를 검사한다. 키보드 case는 상단 control을 실제 Tab으로 순회하고 하트 모달의 첫 포커스, Shift+Tab/Tab 순환, Escape 닫기와 trigger 포커스 복귀, 정확한 계좌번호를 확인한다. Chromium의 forced-colors와 reduced-motion도 별도 context로 실행한다. 결과와 engine version, screenshot, 수동 증거 비주장 범위는 `output/test-runner/visual-accessibility-browser/visual-accessibility-report.json`에 남긴다. 이 gate는 실제 Windows WebView2와 NVDA·Narrator·VoiceOver·TalkBack·IME·사람 검수를 대신하지 않는다.
232
232
-`run-local-state-browser`는 같은 editor build에서 Web 320×720 노트북·자동화와 Local 900×640 노트북·홈·자동화를 연다. Web·Local 노트북의 빈 코드 셀 1개, 정상 상태 무표시, 실행 중·성공·오류 상태와 셀 아래 결과, Web 자동화의 `Local 필요` 3건, Local 연결 뒤 가용 3건, 공용 SNS·테마 control, 가로 overflow·control overlap을 검사한다. 상태별 screenshot과 현재 `gitHead`는 `output/test-runner/run-local-state-browser/run-local-state-report.json`에 남기며, 수동 보조기술과 WebView2 판정을 대신하지 않는다.
233
-
- `product-browser-webview2-evergreen`은 Windows에서 현재 editor를 build하고 current-commit wheel을 격리 launcher root에 설치한 뒤 실제 `codaro-launcher.exe`의 네이티브 WebView2 창을 연다. 제품 데이터는 gate 전용 `CODARO_HOME`에 격리하므로 개발자의 실제 사용자 데이터를 초기화하거나 읽지 않는다. CDP는 별도 브라우저를 띄우는 용도가 아니라 test process가 `CODARO_WEBVIEW2_TEST_BROWSER_ARGUMENTS`로 해당 WebView2 document를 관찰하는 데만 쓰며, 일반 실행에서는 이 test-only 인수를 설정하지 않는다. Win32 client 크기와 `innerWidth/innerHeight × devicePixelRatio`를 대조하고 Local Home 900x640, Notebook 1024x768, Automation 1440x900의 runtime tier, 가로 overflow, 상단 테마·공용 SNS, control overlap과 계좌번호 후원 dialog를 검사한다. 이어 실제 편집 가능한 exercise 셀을 포함한 Web-origin 학습 archive를 가져와 화면 반영, reload 복원, Web runtime 증거 보존, virtual FS·package·automation draft 보존, disabled·unscheduled 작업 채택과 workspace 경계, 재내보내기 후 의미상 동일한 payload를 확인한다. evidence manifest의 재생성 시각 때문에 전체 root hash는 달라질 수 있으므로 document·drafts·virtual FS·packages·automation drafts·evidence events를 materialize해 직접 비교한다. screenshot과 WebView2 exact version은 `output/test-runner/product-browser-webview2-evergreen/webview2-product-smoke-report.json`에 남긴다. launcher CI cache는 실제 workspace target인 `launcher/target/`과 `launcher/Cargo.lock`을 키로 쓰고, WebView2 job은 gate 전용 cargo target을 같은 lock hash로 재사용한다. 이 hosted Evergreen 증거는 공개 배포 Web에서 실제 내보낸 파일, Windows 10 22H2 self-hosted Fixed Version lock, 수동 보조기술, IME, 200%·400% zoom을 대신하지 않는다.
233
+
- `product-browser-webview2-evergreen`은 Windows에서 현재 editor를 build하고 current-commit wheel을 격리 launcher root에 설치한 뒤 실제 `codaro-launcher.exe`의 네이티브 WebView2 창을 연다. 제품 데이터는 gate 전용 `CODARO_HOME`에 격리하므로 개발자의 실제 사용자 데이터를 초기화하거나 읽지 않는다. CDP는 별도 브라우저를 띄우는 용도가 아니라 test process가 `CODARO_WEBVIEW2_TEST_BROWSER_ARGUMENTS`로 해당 WebView2 document를 관찰하는 데만 쓰며, 일반 실행에서는 이 test-only 인수를 설정하지 않는다. Win32 client 크기와 `innerWidth/innerHeight × devicePixelRatio`를 대조하고 Local Home 900x640, Notebook 1024x768, Automation 1440x900의 runtime tier, 가로 overflow, 상단 테마·공용 SNS, control overlap과 계좌번호 후원 dialog를 검사한다. 이어 실제 편집 가능한 exercise 셀을 포함한 Web-origin 학습 archive를 가져와 화면 반영, reload 복원, Web runtime 증거 보존, virtual FS·package·automation draft 보존, disabled·unscheduled 작업 채택과 workspace 경계, 재내보내기 후 의미상 동일한 payload를 확인한다. `CODARO_DEPLOYED_WEB_URL`이 주어지면 system Edge의 새 context가 실제 공개 Lesson에서 정답 코드를 편집·실행하고 browser strong check와 IndexedDB 근거 저장을 기다린 뒤 제품 설정의 학습 작업 파일을 내려받는다. 이 파일을 같은 gate의 설치형 Local에 가져와 root hash·runtime identity·초안 reload·source evidence set·재내보내기 payload를 확인한다. Pages workflow는 deploy job의 실제 `page_url`을 Windows 후속 job에 넘기므로 배포 전 source fixture로 이 경로를 대신할 수 없다. evidence manifest의 재생성 시각과 Local evidence set union 때문에 재내보내기 전체 root hash는 달라질 수 있어 document·drafts·virtual FS·packages·automation drafts와 source evidence event를 materialize해 직접 비교한다. screenshot과 WebView2 exact version은 `output/test-runner/product-browser-webview2-evergreen/webview2-product-smoke-report.json`에 남긴다. launcher CI cache는 실제 workspace target인 `launcher/target/`과 `launcher/Cargo.lock`을 키로 쓰고, WebView2 job은 gate 전용 cargo target을 같은 lock hash로 재사용한다. 공개 배포 경로까지 green이어도 Windows 10 22H2 self-hosted Fixed Version lock, 수동 보조기술, IME, 200%·400% zoom을 대신하지 않는다.
234
234
-`product-experience-browser`는 새 Landing·Editor build, 정적 Web 서버와 실제 Local API를 함께 띄워 Chromium 68-case를 실행한다. 320·390·900·1024·1440px에서 Landing·Learn, Web/Local 학습 홈·Lesson·Chat·Run·Automation과 Web-to-Local handoff의 overflow, 겹침, console/asset 오류, image, accessible name, Astryx scope·runtime tier를 확인한다.
235
235
- Web evidence는 Day 1 mastery·자동 transfer·24시간 retrieval, Day 2·11·15·19·20·22·27·30 다중 입력, Seaborn table/image, pathlib·zip·schedule 각 4개 flow를 실제 pyproc Worker에서 실패 답안 뒤 수정 답안 순서로 검사한다. 검증 cache와 append-only IndexedDB event는 reload 뒤 유지되지만 `completedAt`은 만들지 않는다.
236
236
- Local evidence는 성공한 커널 결과를 native `local-sandbox`에서 같은 CheckSpec으로 재검증하고 `runtimeTier: local`, `local-strong:` event와 SQLite append를 확인한다. infrastructure failure만 250ms 뒤 한 번 재시도하며 mismatch와 학생 코드 오류는 재시도하지 않는다.
Copy file name to clipboardExpand all lines: mainPlan/astryx-product-experience/04-web-learning/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@
9
9
10
10
Learn 목록 개선과 실행 레슨 통합은 별도 완료 단위다. 두 작업이 각각 증거를 남기기 전에는 이 workstream을 `_done`으로 이동하지 않는다.
11
11
12
-
현재 source는 472개 canonical 공개 lesson route를 semantic 문서와 interactive editor shell로 prerender하고 sitemap, 검색 index, JSON-LD와 route별 lazy lesson module에 연결한다. public explorer는 browser 310개, Local 162개를 capability 그대로 표시하며 이어하기, 검색과 여섯 outcome path에서 canonical lesson으로 한 번에 진입한다. 같은 URL에서 `LessonRef`와 section을 복원하고 코드 수정, 실행, output, check, feedback, 필요한 hint, evidence와 다음 학습을 추가 확인 command 없이 갱신한다. 정적 Web은 backend API probe나 code-completion POST 없이 source에 저작된 strong CheckSpec 1,413개/467레슨을 fresh pyproc Worker 경계로 평가한다. mastery·transfer·24시간 retrieval variant는 각각 467레슨에 있으며 대표 Chromium evidence는 Day 1·2·11·15·19·20·22·27·30과 pathlib·zip·schedule W0에 한정해 별도로 보존한다. 정확한 결과는 raw source/output을 저장하지 않고 hash와 check/fixture ID를 IndexedDB v3 append-only event로 저장한다. 기존 `codaro-web-progress-v1`은 metadata backup과 non-credit `MigrationImported` event로 cutover transaction 안에서 보존한다. full learning archive v2는 document, drafts, virtual FS와 file·directory·table·image bytes, package bytes, evidence, lineage, disabled·unscheduled automation draft를 content-addressed blob으로 내보내고 Web과 Local에서 같은 bytes로 materialize한다. Local import는 전체 검증과 evidence merge 뒤 immutable object와 `HEAD`를 원자 교체하고 실패하면 이전 `HEAD`를 복원한다. 공식 `web-learning`, `learning-method`, Light/Dark 대표 Chromium matrix와 route·SEO·hydration은 green이며 `main@3a18dd97` Pages에서 Learn, canonical lesson direct cold load와 Web Run 실제 출력까지 확인했다. independent assessment 승인 0/467, Windows AppContainer, 전수 browser·사람 학습성 검수가 남아 있으므로 상태는 `진행`이고 `_done`이 아니다.
12
+
현재 source는 472개 canonical 공개 lesson route를 semantic 문서와 interactive editor shell로 prerender하고 sitemap, 검색 index, JSON-LD와 route별 lazy lesson module에 연결한다. public explorer는 browser 310개, Local 162개를 capability 그대로 표시하며 이어하기, 검색과 여섯 outcome path에서 canonical lesson으로 한 번에 진입한다. 같은 URL에서 `LessonRef`와 section을 복원하고 코드 수정, 실행, output, check, feedback, 필요한 hint, evidence와 다음 학습을 추가 확인 command 없이 갱신한다. 정적 Web은 backend API probe나 code-completion POST 없이 source에 저작된 strong CheckSpec 1,413개/467레슨을 fresh pyproc Worker 경계로 평가한다. mastery·transfer·24시간 retrieval variant는 각각 467레슨에 있으며 대표 Chromium evidence는 Day 1·2·11·15·19·20·22·27·30과 pathlib·zip·schedule W0에 한정해 별도로 보존한다. 정확한 결과는 raw source/output을 저장하지 않고 hash와 check/fixture ID를 IndexedDB v3 append-only event로 저장한다. 기존 `codaro-web-progress-v1`은 metadata backup과 non-credit `MigrationImported` event로 cutover transaction 안에서 보존한다. full learning archive v2는 document, drafts, virtual FS와 file·directory·table·image bytes, package bytes, evidence, lineage, disabled·unscheduled automation draft를 content-addressed blob으로 내보내고 Web과 Local에서 같은 bytes로 materialize한다. Local import는 전체 검증과 evidence merge 뒤 immutable object와 `HEAD`를 원자 교체하고 실패하면 이전 `HEAD`를 복원한다. 공식 `web-learning`, `learning-method`, Light/Dark 대표 Chromium matrix와 route·SEO·hydration은 green이다. `main@088a5df1` Pages의 Day 1에서 실제 코드를 편집해 browser strong check와 근거 저장을 통과한 뒤 내려받은 full archive를 설치형 Local에 가져와 같은 root hash와 Web runtime identity로 커밋하고 reload·재내보내기까지 확인했다. independent assessment 승인 0/467, Windows AppContainer, 전수 browser·사람 학습성 검수가 남아 있으므로 상태는 `진행`이고 `_done`이 아니다.
| C2 compatibility | 다음 stable release의 `/codaro/app/index.html`은 query와 hash를 `RunRouteState`로 변환하고 exact legacy registration/cache cleanup client를 실행 | 두 release archive, owned old cache 삭제, controlled handoff, exact registration `unregister()` report |
108
108
| C3 retire | C2 뒤 28일 telemetry threshold를 만족할 때 실행 asset을 제거하고 redirect·tombstone 유지 |`/app/` 실행 asset request 0, bookmark migration report 승인 |
109
109
110
-
현재 source Pages workflow는 `npm ci` 뒤 editor를 `/codaro/run/`과 `/codaro/app/` 두 base로 각각 build하고 Landing을 조립한다. 다만 `/app/` tree는 아직 C0 immutable archive나 C2 redirect가 아니라 current editor의 두 번째 build다. 실제 GitHub Pages에는 이 source가 반영되지 않아 `/run/`과 canonical lesson route가 404다. C0 archive 고정, compatibility handoff와 deployed URL smoke가 끝나기 전에는 C1/C2를 통과로 쓰지 않는다.
110
+
현재 source Pages workflow는 `npm ci` 뒤 editor를 `/codaro/run/`과 `/codaro/app/` 두 base로 각각 build하고 Landing을 조립한다. `/app/` tree는 아직 C0 immutable archive나 C2 redirect가 아니라 current editor의 두 번째 build다. `main@088a5df1` GitHub Pages에서 `/run/`과 canonical Day 1 route의 실제 edit·run·strong check·archive export는 통과했지만, C0 archive 고정과 두 release compatibility handoff가 없으므로 C1/C2 전체를 통과로 쓰지 않는다.
111
111
112
112
새 public `serviceWorker.js`는 origin-root absolute asset URL을 직접 쓰지 않는다. build가 site base `/codaro`를 포함한 asset manifest와 cache version을 주입하고 `/codaro/run/manifest.json`, `/codaro/run/serviceWorker.js`, scope `/codaro/run/`만 새 registration으로 사용한다. registration URL과 scope는 `new URL("./serviceWorker.js", document.baseURI)`와 explicit relative scope에서 만들며 Local origin-root build와 Pages subpath build를 같은 literal로 묶지 않는다.
0 commit comments