Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions .github/workflows/vllm-omni-release-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: vLLM-Omni release drift audit

on:
pull_request:
paths:
- .github/workflows/vllm-omni-release-audit.yml
- adapters/vllm_omni/manifest.yaml
- adapters/vllm_omni/release_baseline.yaml
- doc/VLLM_OMNI_RELEASE_MAINTENANCE.md
- knowledge/repos/vllm-omni/**
- tools/audit_vllm_omni_release.py
- tools/vllm_omni_release_audit.py
schedule:
- cron: "23 3 * * 1"
workflow_dispatch:
inputs:
from_ref:
description: Old tag or SHA; blank uses the audited baseline
required: false
type: string
to_ref:
description: New tag or SHA
required: true
default: origin/main
type: string
mode:
description: Scheduled checks use report-only
required: true
default: report-only
type: choice
options:
- report-only
- enforce

permissions:
contents: read

jobs:
audit:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check out vLLM-Omni
uses: actions/checkout@v4
with:
repository: vllm-project/vllm-omni
path: .audit/vllm-omni
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install audit dependency
run: python -m pip install PyYAML

- name: Resolve audit inputs
id: inputs
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
REQUESTED_FROM: ${{ inputs.from_ref }}
REQUESTED_TO: ${{ inputs.to_ref }}
REQUESTED_MODE: ${{ inputs.mode }}
run: |
read_baseline() {
python -c "import yaml; print(yaml.safe_load(open('adapters/vllm_omni/release_baseline.yaml'))['upstream']['$1'])"
}
if [[ "$EVENT_NAME" == "pull_request" ]]; then
echo "from=$(read_baseline previous_audited_sha)" >> "$GITHUB_OUTPUT"
echo "to=$(read_baseline audited_sha)" >> "$GITHUB_OUTPUT"
echo "mode=enforce" >> "$GITHUB_OUTPUT"
else
audited_sha="$(read_baseline audited_sha)"
echo "from=${REQUESTED_FROM:-$audited_sha}" >> "$GITHUB_OUTPUT"
echo "to=${REQUESTED_TO:-origin/main}" >> "$GITHUB_OUTPUT"
echo "mode=${REQUESTED_MODE:-report-only}" >> "$GITHUB_OUTPUT"
fi

- name: Run release audit
run: |
python tools/audit_vllm_omni_release.py \
--from "${{ steps.inputs.outputs.from }}" \
--to "${{ steps.inputs.outputs.to }}" \
--repo .audit/vllm-omni \
--mode "${{ steps.inputs.outputs.mode }}" \
--json-output "${RUNNER_TEMP}/vllm-omni-release-audit.json"

- name: Upload machine report
if: always()
uses: actions/upload-artifact@v4
with:
name: vllm-omni-release-audit
path: ${{ runner.temp }}/vllm-omni-release-audit.json
if-no-files-found: warn
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,6 @@ Strict 模式需要用户明确提出。具体用法见

- [安装和 MCP 配置](doc/MCP.md)
- [知识库贡献规范](knowledge/CONTRIBUTING.md)
- [vLLM-Omni 发版漂移审计](doc/VLLM_OMNI_RELEASE_MAINTENANCE.md)
- [项目设计与实现](doc/)
- [评测说明](eval/README.md)
144 changes: 144 additions & 0 deletions adapters/vllm_omni/release_baseline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
schema_version: 1

upstream:
repository: vllm-project/vllm-omni
previous_audited_sha: 5d44868e918ecf9d3a6f1158c45acfad5989e1a7
audited_ref: v0.26.0rc1
audited_sha: 807db6efd70ff2e9b55a63d6e1b0530e2b74f8f2

# These fingerprints are generated from sorted registry/deploy inventories.
# They make the baseline exact without duplicating hundreds of entries here.
inventories:
autoregressive:
count: 72
sha256: 79afac742125003b8d65a02e0e6b53398c4fc5f1c6e765fa8e1eb31f74871195
diffusion:
count: 61
sha256: f5c0b782cb98f20a9c7c77b696fda620a12d0899fd9e8abc9ccb696fe0c457e1
pipelines:
count: 46
sha256: ce4f6edb8748e030f04bf7a6fe038231453cd1cd75f64311c898acff8c14b14b
deploy_yamls:
count: 71
sha256: fb4c591580262a2dc8d03dd8c7fd681d98486f31007696d56adf349c24c25147

# Structural review owners for changed upstream paths. This is deliberately
# separate from manifest.modules: changing that runtime map alters rebase fan-out.
path_owners:
benchmark:
- benchmarks/
- vllm_omni/benchmarks/
ci:
- .buildkite/
- .github/
- docker/
configuration:
- vllm_omni/config/
- vllm_omni/deploy/
diffusion:
- vllm_omni/diffusion/
distributed:
- vllm_omni/distributed/
documentation:
- .claude/skills/
- docs/
- examples/
- recipes/
- realtime_video_prompt_interaction_protocol.md
model-executor:
- vllm_omni/attention/
- vllm_omni/experimental/
- vllm_omni/inputs/
- vllm_omni/lora/
- vllm_omni/model_executor/
- vllm_omni/model_extras/
- vllm_omni/outputs/
- vllm_omni/platforms/
- vllm_omni/plugins/
- vllm_omni/quantization/
- vllm_omni/reasoning/
- vllm_omni/sample/
- vllm_omni/tokenizers/
- vllm_omni/transformers_utils/
- vllm_omni/utils/
- vllm_omni/worker/
observability:
- vllm_omni/metrics/
- vllm_omni/profiler/
scheduler:
- vllm_omni/core/
serving:
- vllm_omni/engine/
- vllm_omni/entrypoints/
testing:
- tests/
tooling:
- tools/
runtime-core:
- vllm_omni/__init__.py
- vllm_omni/data_entry_keys.py
- vllm_omni/request.py

# Direct review destination for every structural owner above. The audit checks
# that each route has a real current knowledge entrypoint.
owner_documents:
benchmark:
- knowledge/repos/vllm-omni/benchmark/_index.md
ci:
- knowledge/repos/vllm-omni/ci/_index.md
configuration:
- knowledge/repos/vllm-omni/components/configuration/rules.md
diffusion:
- knowledge/repos/vllm-omni/components/diffusion/rules.md
distributed:
- knowledge/repos/vllm-omni/components/distributed/_index.md
documentation:
- knowledge/general/docs/_index.md
model-executor:
- knowledge/repos/vllm-omni/components/model-executor/rules.md
observability:
- knowledge/repos/vllm-omni/rules.md
scheduler:
- knowledge/repos/vllm-omni/components/scheduler/rules.md
serving:
- knowledge/repos/vllm-omni/components/serving/rules.md
testing:
- knowledge/repos/vllm-omni/ci/_index.md
tooling:
- knowledge/repos/vllm-omni/rules.md
runtime-core:
- knowledge/repos/vllm-omni/components/model-executor/rules.md

ignored_paths:
- pattern: .gitignore
reason: repository metadata
- pattern: .pre-commit-config.yaml
reason: repository tooling
- pattern: .readthedocs.yaml
reason: documentation tooling
- pattern: CODE_OF_CONDUCT.md
reason: community metadata
- pattern: CONTRIBUTING.md
reason: community metadata
- pattern: LICENSE
reason: legal metadata
- pattern: README.md
reason: repository overview
- pattern: SECURITY.md
reason: community metadata
- pattern: setup.py
reason: package metadata
- pattern: pyproject.toml
reason: package metadata
- pattern: requirements/
reason: package dependencies

pin_documents:
- doc/KNOWLEDGE.md
- knowledge/repos/vllm-omni/models/catalog.md
- knowledge/repos/vllm-omni/components/configuration/_index.md
- knowledge/repos/vllm-omni/components/diffusion/_index.md
- knowledge/repos/vllm-omni/components/distributed/_index.md
- knowledge/repos/vllm-omni/components/model-executor/_index.md
- knowledge/repos/vllm-omni/components/scheduler/_index.md
- knowledge/repos/vllm-omni/components/serving/_index.md
3 changes: 2 additions & 1 deletion doc/KNOWLEDGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ extensions merely because they are absent from the common source.
history was removed — used for page frontmatter).
- **Code-mirror pin:** the `knowledge/repos/vllm-omni/components/` source maps
are verified against vllm-omni `main @
238fc0a609311235a671940cf209a7eb72c1dc29` (every stated path exists there).
807db6efd70ff2e9b55a63d6e1b0530e2b74f8f2`. The canonical machine baseline
is `adapters/vllm_omni/release_baseline.yaml`.

## Layout: general vs repo-specific
The knowledge base separates the two, and so do we — the whole tree is **shared**,
Expand Down
51 changes: 51 additions & 0 deletions doc/VLLM_OMNI_RELEASE_MAINTENANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# vLLM-Omni 发版漂移审计

InferMatrixCopilot 的模型清单、代码 owner 路由和源码引用会随着
vLLM-Omni 发版而过期。这个审计只读取两个 Git 提交和本仓库声明,不会 checkout
目标版本,也不会自动修改知识规则。

## 本地运行

先在 vLLM-Omni checkout 中 fetch 需要比较的 tag 或 SHA,然后运行:

```powershell
python tools/audit_vllm_omni_release.py `
--from 5d44868e `
--to v0.26.0rc1 `
--repo D:\path\to\vllm-omni `
--json-output $env:TEMP\vllm-omni-release-audit.json
```

审计覆盖:

- AR、Diffusion 和 pipeline registry;
- deploy YAML;
- 新增、修改、删除和重命名路径;
- changed path 到 Direct 知识 owner 的机器路由;
- adapter runtime module 未覆盖的 changed path;
- active knowledge 中受删除或重命名影响的 `sources:`;
- component、model catalog 与 canonical baseline 的 source pin。

同样的提交和 baseline 会产生等价 JSON;报告不包含时间戳和本机 checkout 路径。
默认 `--mode enforce`:存在未解释漂移时退出 1,输入或 Git 失败时退出 2。
`--mode report-only` 仍报告 `DRIFT`,但退出 0,供定时巡检使用。

## 更新一个 release

1. 用当前 `release_baseline.yaml` 的 audited SHA 作为 `--from`,新 tag 作为
`--to`,先跑 `report-only`。
2. 人工确认 registry、deploy、路径 owner 和知识来源变化。
3. 把旧的 `audited_sha` 移到 `previous_audited_sha`,再只更新报告证明已经漂移的
baseline、catalog、source map 或 manifest;不要自动生成语义规则。
4. 用同一组 `--from/--to` 跑 `enforce`,再运行知识 validator 和相关 pytest。
5. JSON 是临时证据,不提交到 `knowledge/`;完成后删除。

## PR 学习与 release 审计是两件事

合并 PR 的复盘只提炼可复用、可执行的 owner 规则,且必须等最终修复、review thread
和 CI 结果稳定后再做。Release 审计只对账结构事实,不把 PR 内容、事故过程或审计报告
写进知识树,也不因为上游发版自动升级 InferMatrixCopilot 版本或依赖。

CI 每周对 upstream `main` 运行 `report-only`。修改 baseline 的 PR 会自动用
`previous_audited_sha → audited_sha` 运行 `enforce`;Actions 手动运行可用
`report-only` 检查任意区间,`enforce` 只接受当前 baseline 声明的升级区间。
8 changes: 4 additions & 4 deletions knowledge/repos/vllm-omni/ci/guides/test-tiers.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
---
title: "测试分级(L1–L5)与 pytest markers"
created: 2026-07-16
updated: 2026-07-16
updated: 2026-07-31
type: guide
tags: [vllm-omni, ci]
sources: [docs/contributing/ci/CI_5levels.md, docs/contributing/ci/tests_markers.md]
sources: [docs/contributing/ci/test_system_overview.md, docs/contributing/ci/test_writing_guide.md]
---

# 测试分级(L1–L5)与 pytest markers

官方 spec:`docs/contributing/ci/CI_5levels.md` + `tests_markers.md`
(`main @ 5c390096` 复核)。测试金字塔五级 + Common 规范
官方 spec:`docs/contributing/ci/test_system_overview.md` +
`test_writing_guide.md`(`main @ 807db6ef` 复核)。测试金字塔五级 + Common 规范
(PR 模板/checklist 与 CI 失败说明)。

## 五级定义
Expand Down
2 changes: 2 additions & 0 deletions knowledge/repos/vllm-omni/components/configuration/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ sources: ["claude-workflow-starter-private@296ea45", vllm_omni/config/]
- 主要测试:`tests/config/`、`tests/test_config_factory.py`、`tests/test_diffusion_config_propagation.py`,以及各公开入口附近的配置测试
- 部署配置:`vllm_omni/deploy/*.yaml`,以及 `pipeline_registry.py`、
`endpoint_policy.py`、`server_settings.py`、`yaml_util.py`、`composable_parallel/`
- 源码校验:以上路径在 `main @ 807db6ef` 验证存在;机器基线见
`adapters/vllm_omni/release_baseline.yaml`

## 什么时候查这里

Expand Down
2 changes: 1 addition & 1 deletion knowledge/repos/vllm-omni/components/diffusion/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sources: []
# Diffusion

- 源码入口:`vllm_omni/diffusion/` 全树,含 16 个子模块:attention、cache、distributed、executor、hooks、layers、lora、model_loader、models、offloader、postprocess、profiler、quantization、sched、utils、worker
- 源码校验:以上子模块均已在 `main @ 238fc0a6`(此前亦在 `dev/vllm-align @ 4f2b32c` 验证,结果一致) 验证存在
- 源码校验:以上子模块均已在 `main @ 807db6ef` 验证存在
- 主要职责:多个 diffusion 模型共用的 pipeline、执行循环、scheduler 接入和运行机制

## 什么时候查这里
Expand Down
2 changes: 1 addition & 1 deletion knowledge/repos/vllm-omni/components/distributed/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ sources: [vllm_omni/distributed/omni_connectors/, vllm_omni/distributed/omni_coo
`vllm_omni/distributed/omni_coordinator/`(协调器与 load balancer)
- 知识面另覆盖跨 stage ZMQ 路由/端口分配(`vllm_omni/engine/stage_engine_startup.py::OmniMasterServer`)
——组件划分服务知识归属,与 manifest 运行时粒度不同
- 源码校验:以上路径与下列锚点均已在 `main @ 5c390096` 验证存在:
- 源码校验:以上路径与下列锚点均已在 `main @ 807db6ef` 验证存在:
`OmniConnectorBase`(connectors/base.py:12)、`OmniKVTransferManager`
(kv_transfer_manager.py:341)、`LoadBalancer` 三实现(load_balancer.py:39/64/74/102)、
`OmniMasterServer._allocate_route_locked`(stage_engine_startup.py:254)
Expand Down
5 changes: 3 additions & 2 deletions knowledge/repos/vllm-omni/components/model-executor/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ sources: []

# Model Executor

- 源码入口:`vllm_omni/model_executor/`(layers、model_loader、models、stage_configs、stage_input_processors)、`vllm_omni/worker/`(gpu_*_worker、gpu_*_model_runner、mixins)、`vllm_omni/inputs/`(runner 输入预处理:data.py、preprocess.py)和设备平台层 `vllm_omni/platforms/<cuda|musa|npu|rocm|xpu>/platform.py`
- 源码校验:以上路径均已在 `main @ 238fc0a6`(此前亦在 `dev/vllm-align @ 4f2b32c` 验证,结果一致) 验证存在;旧的 `platforms/*/worker/` 布局在该提交已不存在(平台目录只含 `platform.py`)
- 源码入口:`vllm_omni/model_executor/`(layers、model_loader、models、stage_input_processors)、`vllm_omni/worker/`(gpu_*_worker、gpu_*_model_runner、mixins)、`vllm_omni/inputs/`(runner 输入预处理:data.py、preprocess.py)和设备平台层 `vllm_omni/platforms/<cuda|musa|npu|rocm|xpu>/`
- 源码校验:以上路径均已在 `main @ 807db6ef` 验证存在;stage 配置已经迁移到
`vllm_omni/deploy/`,NPU/XPU 等平台可继续拥有自己的 worker 覆盖
- 测试入口:共享 runner 行为看 `tests/worker/`,具体模型 consumer 看 `tests/model_executor/`
- 主要职责:AR/LLM stage、stage 配置、并行与设备启动、runner 到模型的输入预处理合同和跨阶段数据桥接

Expand Down
2 changes: 1 addition & 1 deletion knowledge/repos/vllm-omni/components/scheduler/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ sources: [vllm_omni/core/sched/omni_ar_scheduler.py, vllm_omni/core/prefix_cache

- 源码入口:`vllm_omni/core/sched/`(`omni_ar_scheduler.py`、`omni_generation_scheduler.py`、
`omni_scheduler_mixin.py`、`omni_scheduling_coordinator.py`)和 `vllm_omni/core/prefix_cache.py`
- 源码校验:以上路径与下列类均已在 `main @ 5c390096` 验证存在:`OmniARScheduler`(:50)、
- 源码校验:以上路径与下列类均已在 `main @ 807db6ef` 验证存在:`OmniARScheduler`(:50)、
`OmniARAsyncScheduler`(:928)、`KVCacheTransferData`(:40)、`OmniGenerationScheduler`(:42)、
`OmniSchedulerMixin`(:40)、`OmniTensorPrefixCache`(prefix_cache.py:33)
- 官方设计文档:`docs/design/module/ar_module.md`(继承关系、请求流转图)
Expand Down
2 changes: 1 addition & 1 deletion knowledge/repos/vllm-omni/components/serving/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sources: []
# Serving

- 主要源码入口:`vllm_omni/entrypoints/`(cli、openai、openpi 及 omni/async_omni 入口)和 `vllm_omni/engine/`(orchestrator、stage engine core、stage pool/runtime、output processor)
- 源码校验:以上路径均已在 `main @ 238fc0a6`(此前亦在 `dev/vllm-align @ 4f2b32c` 验证,结果一致) 验证存在
- 源码校验:以上路径均已在 `main @ 807db6ef` 验证存在
- 主要职责:用户入口、请求解析、在线服务和 engine 边界

## 什么时候查这里
Expand Down
Loading
Loading