惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
G
Google Developers Blog
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
I
InfoQ
MyScale Blog
MyScale Blog
V
V2EX
B
Blog
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
ci: split release qa parity lanes · openclaw/openclaw@f1e...
steipete · 2026-04-28 · via Recent Commits to openclaw:main

@@ -302,14 +302,22 @@ jobs:

302302

OPENCLAW_QA_CONVEX_SITE_URL: ${{ secrets.OPENCLAW_QA_CONVEX_SITE_URL }}

303303

OPENCLAW_QA_CONVEX_SECRET_CI: ${{ secrets.OPENCLAW_QA_CONVEX_SECRET_CI }}

304304305-

qa_lab_parity_release_checks:

306-

name: Run QA Lab parity gate

305+

qa_lab_parity_lane_release_checks:

306+

name: Run QA Lab parity lane (${{ matrix.lane }})

307307

needs: [resolve_target]

308308

if: contains(fromJSON('["all","qa","qa-parity"]'), needs.resolve_target.outputs.rerun_group)

309309

runs-on: blacksmith-32vcpu-ubuntu-2404

310310

timeout-minutes: 30

311311

permissions:

312312

contents: read

313+

strategy:

314+

fail-fast: false

315+

matrix:

316+

include:

317+

- lane: candidate

318+

output_dir: gpt54

319+

- lane: baseline

320+

output_dir: opus46

313321

env:

314322

QA_PARITY_CONCURRENCY: "1"

315323

OPENCLAW_QA_TRANSPORT_READY_TIMEOUT_MS: "180000"

@@ -338,25 +346,80 @@ jobs:

338346

- name: Build private QA runtime

339347

run: pnpm build

340348341-

- name: Run OpenAI candidate lane

349+

- name: Run parity lane

350+

env:

351+

QA_PARITY_LANE: ${{ matrix.lane }}

352+

QA_PARITY_OUTPUT_DIR: ${{ matrix.output_dir }}

342353

run: |

343-

pnpm openclaw qa suite \

344-

--provider-mode mock-openai \

345-

--parity-pack agentic \

346-

--concurrency "${QA_PARITY_CONCURRENCY}" \

347-

--model "${OPENCLAW_CI_OPENAI_MODEL}" \

348-

--alt-model openai/gpt-5.4-alt \

349-

--output-dir .artifacts/qa-e2e/gpt54

354+

set -euo pipefail

355+356+

case "${QA_PARITY_LANE}" in

357+

candidate)

358+

model="${OPENCLAW_CI_OPENAI_MODEL}"

359+

alt_model="openai/gpt-5.4-alt"

360+

;;

361+

baseline)

362+

model="anthropic/claude-opus-4-6"

363+

alt_model="anthropic/claude-sonnet-4-6"

364+

;;

365+

*)

366+

echo "Unknown QA parity lane: ${QA_PARITY_LANE}" >&2

367+

exit 1

368+

;;

369+

esac

350370351-

- name: Run Opus 4.6 lane

352-

run: |

353371

pnpm openclaw qa suite \

354372

--provider-mode mock-openai \

355373

--parity-pack agentic \

356374

--concurrency "${QA_PARITY_CONCURRENCY}" \

357-

--model anthropic/claude-opus-4-6 \

358-

--alt-model anthropic/claude-sonnet-4-6 \

359-

--output-dir .artifacts/qa-e2e/opus46

375+

--model "${model}" \

376+

--alt-model "${alt_model}" \

377+

--output-dir ".artifacts/qa-e2e/${QA_PARITY_OUTPUT_DIR}"

378+379+

- name: Upload parity lane artifacts

380+

if: always()

381+

uses: actions/upload-artifact@v4

382+

with:

383+

name: release-qa-parity-${{ matrix.lane }}-${{ needs.resolve_target.outputs.sha }}

384+

path: .artifacts/qa-e2e/

385+

retention-days: 14

386+

if-no-files-found: warn

387+388+

qa_lab_parity_report_release_checks:

389+

name: Run QA Lab parity report

390+

needs: [resolve_target, qa_lab_parity_lane_release_checks]

391+

if: contains(fromJSON('["all","qa","qa-parity"]'), needs.resolve_target.outputs.rerun_group)

392+

runs-on: blacksmith-32vcpu-ubuntu-2404

393+

timeout-minutes: 20

394+

permissions:

395+

contents: read

396+

actions: read

397+

env:

398+

OPENCLAW_BUILD_PRIVATE_QA: "1"

399+

OPENCLAW_ENABLE_PRIVATE_QA_CLI: "1"

400+

steps:

401+

- name: Checkout selected ref

402+

uses: actions/checkout@v6

403+

with:

404+

ref: ${{ needs.resolve_target.outputs.ref }}

405+

fetch-depth: 1

406+407+

- name: Setup Node environment

408+

uses: ./.github/actions/setup-node-env

409+

with:

410+

node-version: ${{ env.NODE_VERSION }}

411+

pnpm-version: ${{ env.PNPM_VERSION }}

412+

install-bun: "true"

413+414+

- name: Download parity lane artifacts

415+

uses: actions/download-artifact@v4

416+

with:

417+

pattern: release-qa-parity-*-${{ needs.resolve_target.outputs.sha }}

418+

path: .artifacts/qa-e2e/

419+

merge-multiple: true

420+421+

- name: Build private QA runtime

422+

run: pnpm build

360423361424

- name: Generate parity report

362425

run: |

@@ -548,7 +611,8 @@ jobs:

548611

- cross_os_release_checks

549612

- live_and_e2e_release_checks

550613

- package_acceptance_release_checks

551-

- qa_lab_parity_release_checks

614+

- qa_lab_parity_lane_release_checks

615+

- qa_lab_parity_report_release_checks

552616

- qa_live_matrix_release_checks

553617

- qa_live_telegram_release_checks

554618

if: always()

@@ -566,7 +630,8 @@ jobs:

566630

"cross_os_release_checks=${{ needs.cross_os_release_checks.result }}" \

567631

"live_and_e2e_release_checks=${{ needs.live_and_e2e_release_checks.result }}" \

568632

"package_acceptance_release_checks=${{ needs.package_acceptance_release_checks.result }}" \

569-

"qa_lab_parity_release_checks=${{ needs.qa_lab_parity_release_checks.result }}" \

633+

"qa_lab_parity_lane_release_checks=${{ needs.qa_lab_parity_lane_release_checks.result }}" \

634+

"qa_lab_parity_report_release_checks=${{ needs.qa_lab_parity_report_release_checks.result }}" \

570635

"qa_live_matrix_release_checks=${{ needs.qa_live_matrix_release_checks.result }}" \

571636

"qa_live_telegram_release_checks=${{ needs.qa_live_telegram_release_checks.result }}"

572637

do