Skip to content

증거: R10 사실 감사를 최신 평가 번들에 연결한다 #702

증거: R10 사실 감사를 최신 평가 번들에 연결한다

증거: R10 사실 감사를 최신 평가 번들에 연결한다 #702

Workflow file for this run

name: CI
on:
pull_request:
branches: ["main"]
push:
branches: ["main"]
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
backend:
runs-on: ubuntu-latest
env:
UV_PYTHON: ${{ matrix.python-version }}
strategy:
matrix:
python-version: ["3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: |
editor/package-lock.json
landing/package-lock.json
- name: Install editor
working-directory: editor
run: npm ci
- name: Install landing
working-directory: landing
run: npm ci
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install dependencies
run: uv sync --extra dev --python ${{ matrix.python-version }}
- name: Verify Python ${{ matrix.python-version }}
run: |
uv run python -c "import sys; expected='${{ matrix.python-version }}'; actual=f'{sys.version_info.major}.{sys.version_info.minor}'; print(sys.version); assert actual == expected, (actual, expected)"
- name: Run root clean gate
run: uv run python -X utf8 tests/run.py gate root-clean
- name: Run docs gate
run: uv run python -X utf8 tests/run.py gate docs
- name: Run architecture boundary gate
run: uv run python -X utf8 tests/run.py gate architecture-boundary
- name: Verify PRD evaluation contract
if: matrix.python-version == '3.12'
run: uv run python -X utf8 tests/run.py gate evaluation-contract
- name: Observe plan quality bootstrap
if: matrix.python-version == '3.12'
continue-on-error: true
run: uv run python -X utf8 tests/run.py gate plan-quality
- name: Run backend gate
run: uv run python -X utf8 tests/run.py gate backend
- name: Run learning evidence contract
if: matrix.python-version == '3.12'
run: uv run python -X utf8 tests/run.py gate learning-evidence-contract
- name: Verify removed learning concepts
if: matrix.python-version == '3.12'
run: uv run python -X utf8 tests/run.py gate removed-learning-concepts
- name: Run learning efficacy report contract
if: matrix.python-version == '3.12'
run: uv run python -X utf8 tests/run.py gate learning-efficacy-report
- name: Run curriculum quality matrix
if: matrix.python-version == '3.12'
timeout-minutes: 20
run: uv run python -X utf8 tests/run.py gate curriculum-quality-matrix
- name: Verify repository simplification
if: matrix.python-version == '3.12'
timeout-minutes: 10
run: uv run python -X utf8 tests/run.py gate repository-simplification
- name: Run widget-bridge gate
run: uv run python -X utf8 tests/run.py gate widget-bridge
- name: Run app-runtime gate
run: uv run python -X utf8 tests/run.py gate app-runtime
- name: Run mobile-layout gate
run: uv run python -X utf8 tests/run.py gate mobile-layout
editor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: editor/package-lock.json
- name: Install
working-directory: editor
run: npm ci
- name: Build
run: python -X utf8 tests/run.py gate editor-build
landing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: landing/package-lock.json
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Install
working-directory: landing
run: npm ci
- name: Build
run: python -X utf8 tests/run.py gate landing-build
experience:
runs-on: ubuntu-latest
timeout-minutes: 120
env:
CODARO_FRONTEND_BUILD_REUSE: "1"
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Set up Python
run: uv python install 3.12
- name: Install Python dependencies
run: uv sync --extra dev --python 3.12
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: |
editor/package-lock.json
landing/package-lock.json
- name: Install editor
working-directory: editor
run: npm ci
- name: Install landing
working-directory: landing
run: npm ci
- name: Install locked browser matrix
timeout-minutes: 15
run: uv run python -m playwright install --with-deps chromium firefox webkit
- name: Verify visual assets
timeout-minutes: 15
run: uv run python -X utf8 tests/run.py gate visual-assets
- name: Verify Astryx design system
timeout-minutes: 15
run: uv run python -X utf8 tests/run.py gate design-system-contract
- name: Verify theme runtime matrix
timeout-minutes: 25
run: uv run python -X utf8 tests/run.py gate theme-runtime-browser
- name: Verify visual accessibility matrix
timeout-minutes: 25
run: uv run python -X utf8 tests/run.py gate visual-accessibility-browser
- name: Verify direct learning method
timeout-minutes: 15
run: uv run python -X utf8 tests/run.py gate learning-method
- name: Verify Web learning
timeout-minutes: 25
run: uv run python -X utf8 tests/run.py gate web-learning
- name: Verify public landing
timeout-minutes: 25
run: uv run python -X utf8 tests/run.py gate landing-public
- name: Verify Local Studio
timeout-minutes: 30
run: uv run python -X utf8 tests/run.py gate local-studio-browser
- name: Verify Run and Local states
timeout-minutes: 15
run: uv run python -X utf8 tests/run.py gate run-local-state-browser
- name: Verify full product experience
timeout-minutes: 30
run: uv run python -X utf8 tests/run.py gate product-experience-browser
- name: Verify Astryx dual-theme journey
timeout-minutes: 45
run: uv run python -X utf8 tests/run.py gate astryx-journey
launcher:
# 다운로드 엔진(타임아웃/재시도/resume mock 테스트)과 provision 경로를 실제 배포 타깃인
# Windows를 포함한 3개 OS에서 검증한다. "내 로컬은 되는데 다른 환경은 터진다"를 CI에서 막는다.
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Install Linux WebView dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
launcher/target/
key: cargo-${{ runner.os }}-${{ hashFiles('launcher/Cargo.lock') }}
- name: Check (no build)
run: python -X utf8 tests/run.py gate launcher-check
- name: Run tests
run: python -X utf8 tests/run.py gate launcher-test
webview2-evergreen:
runs-on: windows-latest
timeout-minutes: 35
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Set up Python
run: uv python install 3.12
- name: Install Python dependencies
run: uv sync --extra dev --python 3.12
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
cache-dependency-path: editor/package-lock.json
- name: Install editor
working-directory: editor
run: npm ci
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache WebView2 smoke cargo build
uses: actions/cache@v4
with:
path: output/test-runner/product-browser-webview2-evergreen/cargo-target/
key: webview2-cargo-${{ runner.os }}-${{ hashFiles('launcher/Cargo.lock') }}
- name: Verify native WebView2 product
run: uv run python -X utf8 tests/run.py gate product-browser-webview2-evergreen