docs: add next stage cicd dispatch matrix

This commit is contained in:
Codex
2026-05-21 08:48:34 +00:00
parent 3d28faa811
commit f055e18523
12 changed files with 865 additions and 4 deletions
@@ -26,6 +26,14 @@ const runtimePrompt = `
验证:需要证明 scheduler heartbeat、active run、OpenCode session recovery 都正确。
`;
const mediumPrompt = `
目标:实现一个前端 React 控制台组件的小功能,给 Code Queue 任务列表增加可折叠的验证证据摘要。
范围:只改用户界面模块中的一个 TSX 组件和一个相邻的轻量 contract guard,不触碰 backend-core、Code Queue runtime、provider-gateway、k3sctl-adapter、部署配置或数据库 schema。
禁止:不要部署 prod,不要重启服务,不要读取密钥,不要写数据库,不要修改 release/v1,不要跑 heavy check/e2e/Playwright。
验证:运行针对该组件或 contract guard 的轻量脚本,final response 必须报告修改文件、验证命令、输出摘要、commit 和遗留风险。
背景:本 prompt 是完整需求来源,GitHub issue 只能作为辅助引用,不能作为唯一来源。这个任务有真实代码变更和 UI 状态判断,复杂度高于只读文档,但写入边界局部、可审阅、可用轻量测试复核。
`;
const commanderOnlyPrompt = `
目标:在 production 上 deploy apply 并 restart code-queue,必要时读取 secret token 和写 PostgreSQL 修复任务状态。
验证:live health。
@@ -44,6 +52,18 @@ export function runCodeQueueSubmitRoutingContract(): JsonRecord {
assertCondition(runtime.recommendedRunner === "codex", "runtime/core work should recommend Codex runner", runtime);
assertCondition(runtime.recommendedModel === "gpt-5.5", "runtime/core work should recommend GPT-5.5", runtime);
const medium = codexSubmitRoutingRecommendationForTest(mediumPrompt, "deepseek");
assertCondition(medium.route === "deepseek-codex", "medium bounded frontend work should recommend DeepSeek", medium);
assertCondition(medium.recommendedRunner === "codex", "DeepSeek work should use Codex runner", medium);
assertCondition(medium.recommendedModel === "deepseek-chat", "DeepSeek candidate should recommend deepseek-chat", medium);
assertCondition(asRecord(medium.riskControls).mediumComplexityCandidate === true, "medium prompt should satisfy medium complexity controls", medium);
assertCondition(asRecord(medium.explicitRequest).model === "deepseek-chat", "explicit deepseek alias should normalize to deepseek-chat", medium);
const policyContract = asRecord(medium.policyContract);
assertCondition(asRecord(policyContract.concurrency).gpt55Routine === 5, "policy contract should expose GPT-5.5 routine concurrency", policyContract);
assertCondition(asRecord(policyContract.concurrency).gpt55BurstMax === 10, "policy contract should expose GPT-5.5 burst concurrency", policyContract);
assertCondition(asRecord(policyContract.concurrency).minimaxSimpleMax === 10, "policy contract should expose MiniMax simple concurrency", policyContract);
assertCondition(asRecord(policyContract.concurrency).deepseekMediumDefault === 5, "policy contract should expose DeepSeek medium default concurrency", policyContract);
const commanderOnly = codexSubmitRoutingRecommendationForTest(commanderOnlyPrompt);
assertCondition(commanderOnly.route === "commander-human-only", "prod restart/secrets/DB work should be commander-only", commanderOnly);
assertCondition(commanderOnly.recommendedRunner === "commander", "commander-only work should not recommend a runner", commanderOnly);
@@ -60,6 +80,8 @@ export function runCodeQueueSubmitRoutingContract(): JsonRecord {
checks: [
"low-risk self-contained prompts recommend minimax-m2.7/OpenCode",
"runtime/core work recommends GPT-5.5/Codex",
"medium bounded frontend work recommends deepseek-chat/Codex",
"dry-run policy contract exposes model-tier concurrency",
"prod/restart/secret/DB work is commander-only",
"explicit --model mismatch is visible and payload is unchanged",
],