Skip to content

운영: mainPlan을 git 추적에서 뺀다 #312

운영: mainPlan을 git 추적에서 뺀다

운영: mainPlan을 git 추적에서 뺀다 #312

Workflow file for this run

# CI: 구조 게이트 + 브라우저 런타임 게이트. 게이트 정의의 SSOT는 tests/ (여기는 디스패치만).
name: ci
on:
push:
branches: [main]
pull_request:
# 게시 경로가 같은 게이트 집합을 재사용한다(목록 이중 관리 = 표류의 씨앗).
workflow_call:
permissions:
contents: read
jobs:
structure:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 22
# 의존성 0이지만 lockfile 정합(extraneous 잔재 감지)을 위해 npm ci를 먼저 돈다.
- run: npm ci
- run: npm run skills:check
- run: npm run skills:test-routing
- run: npm run skills:test-package
- run: npm run skills:test-mcp
- run: npm run skills:test-forward
- run: npm run skills:test-performance
- run: npm run test:contracts
- run: npm run test:engine-independence
- run: npm run test:package
- run: npm test
# 타입 계약 게이트: 손으로 유지하는 d.ts에 컴파일러를 붙인다. typescript는 CI 도구로만
# 쓰고 package 의존성으로 넣지 않는다(설치 의존성 0 유지).
- run: npm run test:types
browser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 22
# ubuntu 러너에 Google Chrome이 프리인스톨되어 있다. CI=true라 --no-sandbox가 자동 적용된다.
- run: npm run test:browser
env:
PYPROC_BROWSER: /usr/bin/google-chrome
PYPROC_GATE_OUT: gateMeasurements.json
# 설치 패키지 게이트: npm pack으로 설치한 pyproc을 격리 브라우저가 public specifier로 import한다.
- run: npm run test:installed
- run: npm run test:golden
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# 러너 실측 수치를 보존한다: 원장/리드미의 로컬 수치와 비교 가능한 근거.
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
if: always()
with:
name: gate-measurements
path: gateMeasurements.json
# 증거가 없으면 조용히 넘기지 않는다: PYPROC_GATE_OUT 배선이 죽으면 실측이 사라지고
# "측정했다"는 기록만 남는다. 러너는 RED에서도 이 파일을 쓴다.
if-no-files-found: error
# 예제 실행 게이트: 데모 페이지가 사람이 여는 그대로 완주하는지(진열장 회귀 방지).
- run: npm run test:examples
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# 공유 러너(4 vCPU)는 4-워커 샤딩이 물리적으로 2.0x를 못 넘는다(실측 1.90-1.98x).
# 여기서의 게이트는 데모 완주+정확성이고, 속도 주장 인증은 artifact 계약(S1)이다.
PYPROC_EXAMPLES_MIN_SPEEDUP: "1.3"
# 헤더 없는 호스팅 진단 게이트.
- run: npm run test:preflight
env:
PYPROC_BROWSER: /usr/bin/google-chrome
PYPROC_NO_COI: "1"
# Web Machine의 무자산 host, persistence, owner, fleet 계약.
- run: npm run test:web-machine
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: npm run test:web-machine-conformance
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# MCP 레시피 게이트: stdio JSON-RPC, sandbox control, read-only skill 도구의 실왕복.
- run: npm run test:mcp
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# 설치 tarball의 stable bin으로 Python, ordered screenshot, chunk read/delete를 완주한다.
- run: npm run test:mcp-product
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# 같은 제품 런타임의 언어 중립 Control Protocol, cancel, binary attachment를 설치물에서 검증한다.
- run: npm run test:control-product
- run: npm run test:frame-space
- run: npm run test:app-space
- run: npm run test:replay-graph
- run: npm run test:actuation
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: npm run test:windows-motor
if: runner.os == 'Windows'
- run: npm run test:delegated-tab
if: runner.os == 'Windows'
- run: npm run test:replay-space
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: python -m pip install -r pythonSdk/buildRequirements.txt
- run: npm run test:python-sdk
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# APX 정식 제품 게이트: occlusion, identity, delta, visual artifact와 EvidenceLoop를 검증한다.
- run: npm run test:apx
- run: npm run test:perception-computer
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# strict Experience Contract를 실제 Chromium에서 audit하고 Evidence Pack verify와 replay를 검증한다.
- run: npm run test:experience-verification
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# Opt-in browser automation broker: compact observe, 고수준 action pipeline, Python restore와
# 외부 Chromium effect의 비복원 경계, permission, 취소와 사망 outcome을 같은 MCP 흐름에서 검증한다.
- run: npm run test:browser-control
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: npm run test:browser-control-stress
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: npm run test:automation-lifecycle
env:
PYPROC_BROWSER: /usr/bin/google-chrome
- run: npm run test:action-convergence
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# 실제 Microsoft Edge의 Windows 배포 경계. 설치 tarball/골든 경로와 핵심 브라우저
# 계약을 Chrome과 독립해 문다. examples는 Chrome의 동일 쇼케이스를 그대로 반복해 비용이
# 커서 제외하고, WASI/v86 실행 자산 레인은 Ubuntu 전용 job이 계속 소유한다.
edge-release:
runs-on: windows-latest
env:
PYPROC_BROWSER: 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 22
- name: Microsoft Edge 설치 확인
shell: pwsh
run: |
if (-not (Test-Path -LiteralPath $env:PYPROC_BROWSER -PathType Leaf)) {
throw "Microsoft Edge executable not found: $env:PYPROC_BROWSER"
}
$edge = Get-Item -LiteralPath $env:PYPROC_BROWSER
Write-Host "Microsoft Edge $($edge.VersionInfo.ProductVersion)"
- run: npm ci
- run: npm run skills:check
- run: npm run skills:test-routing
- run: npm run skills:test-package
- run: npm run skills:test-mcp
- run: npm run skills:test-forward
- run: npm run skills:test-performance
- run: npm test
- run: npm run test:browser
env:
PYPROC_GATE_OUT: edgeGateMeasurements.json
# npm pack 설치물의 public specifier와 골든 워크플로를 실제 Edge에서 검증한다.
- run: npm run test:installed
- run: npm run test:golden
# 무자산 Web Machine 계약만 실행한다. 실제 WASI/v86 guest는 Ubuntu 레인이 소유한다.
- run: npm run test:web-machine
- run: npm run test:web-machine-conformance
- run: npm run test:mcp
- run: npm run test:mcp-product
- run: npm run test:control-product
- run: npm run test:frame-space
- run: npm run test:app-space
- run: npm run test:replay-graph
- run: npm run test:actuation
- run: npm run test:windows-motor
if: runner.os == 'Windows'
- run: npm run test:delegated-tab
if: runner.os == 'Windows'
- run: npm run test:replay-space
- run: python -m pip install -r pythonSdk/buildRequirements.txt
- run: npm run test:python-sdk
- run: npm run test:apx
- run: npm run test:perception-computer
- run: npm run test:experience-verification
- run: npm run test:browser-control
- run: npm run test:browser-control-stress
- run: npm run test:automation-lifecycle
- run: npm run test:action-convergence
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
if: always()
with:
name: edge-gate-measurements
path: edgeGateMeasurements.json
if-no-files-found: error
web-computer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 22
# 실행 자산(v86 engine/firmware/guest image)은 hash 고정 development channel이며
# 미추적이다: 준비 스크립트가 받아오고 catalog 버전 키로 캐시한다.
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: apps/webComputer/assets
key: web-computer-assets-${{ hashFiles('apps/webComputer/assetCatalog.json') }}
# 3-process 제품 E2E: 초기 부팅 -> 브라우저 프로세스 재시작 콜드 복원 -> 새 프로필 import.
- run: npm run test:web-computer
env:
PYPROC_BROWSER: /usr/bin/google-chrome
# x86 자산 레인. 오랫동안 "자산이 gitignore라 CI에서 못 돈다"고 적혀 있었지만 그것은 낡은
# 문장이었다: 위 job이 같은 catalog의 같은 자산을 매 push마다 받아온다. gitignore는 "받을 수
# 없다"가 아니라 "커밋하지 않는다"이고, 준비 스크립트가 SHA-256 핀으로 받아온다.
web-machine-x86:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 22
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: tests/webMachine/fixtures/v86/assets
key: web-machine-v86-assets-${{ hashFiles('scripts/assetCatalog.json') }}
# 실 x86 Linux guest를 부팅해 dual-boot과 장치(디스플레이·프레임버퍼·패킷·포인터)를 문다.
# 타임아웃을 올린 이유는 공유 러너에서 v86 부팅이 느리기 때문이다(자산이 아니라 CPU 몫).
- run: npm run test:web-machine:v86
env:
PYPROC_BROWSER: /usr/bin/google-chrome
PYPROC_GATE_TIMEOUT: "600000"
# exact packed package가 Python, Linux, source-pinned Node를 한 signed computer로 옮기고
# 변조 Node image를 active swap 전에 거절하는지 같은 x86 asset lane에서 반복한다.
- run: npm run test:node-guest
env:
PYPROC_BROWSER: /usr/bin/google-chrome
PYPROC_GATE_TIMEOUT: "900000"
PYPROC_NODE_GUEST_HEADED: "0"