7-layer mechanical quality gate: any required layer fail = reject/revert.
improvement-discriminatorimprovement-executorimprovement-learnerLayerGateRequiredPass Condition0SchemaGateYesCandidate has id, category, risk_level, execution_plan1CompileGateYesModified .py files pass py_compile; non-Python files auto-pass2LintGateNo (advisory)No lines >120 chars, no mixed tabs/spaces in diff3RegressionGateYesEvaluator verdict != "reject" (checks evaluator_evidence)4ReviewGateYesDiscriminator recommendation=accept AND panel not DISPUTED AND LLM judge != reject5DoubtGateYesCandidate text has < threshold hedging words (threshold varies by category: docs=2, prompt=4, code=3)6HumanReviewGateNo (advisory)Flags needs_human=true for medium/high risk or prompt/workflow/tests/code categories
Gate execution: layers run sequentially. First required-layer failure stops execution and triggers revert (if file was modified) or reject.
bash
python3 scripts/gate.py \
--ranking ranking.json \ # REQUIRED: ranking artifact from discriminator
--execution execution.json \ # REQUIRED: execution artifact from executor
--state-root /path/to/state \ # default: lib/state_machine.DEFAULT_STATE_ROOT
--evaluation eval.json \ # optional: evaluator artifact (forwarded by orchestrator)
--layers schema,compile,review \ # optional: run only these layers (default: all 7)
--output receipt.json # default: auto-generated path
ParamDefaultWhen to change--layersall 7Use schema,compile for fast structural checks only--evaluationNoneOrchestrator passes this automatically when evaluator ran
bash
# List pending human reviews
python3 scripts/review.py --state-root /path/to/state --list
# Complete a review
python3 scripts/review.py --state-root /path/to/state \
--complete review-cand-01-docs \
--decision approve \ # approve | reject
--reason "低风险文档变更,LGTM" \
--reviewer engineer-name # default: cli-user
ConditionDecisionActionaccept_for_execution + low-risk docs/reference/guardrail + successkeepFile stays modifiedrecommendation=rejectrevertRestore backup, append to veto logrecommendation=hold OR non-auto-keep-eligiblepending_promoteRestore backup, create review requestexecution.status=unsupportedrejectNo file change, log reason
如果 HumanReviewGate 标记 needs_human=true,即使 keep eligible 也会升级为 pending_promote。
正确: gate 返回 pending_promote → 查审批队列 → 人工批准 $ python3 scripts/review.py --state-root ./state --list → ID: review-cand-01-docs Category: docs Risk: low Since: 2025-01-15T10:00:00Z $ python3 scripts/review.py --state-root ./state --complete review-cand-01-docs --decision approve --reason "confirmed safe" → Review review-cand-01-docs completed: approve
错误: gate 返回 revert 后仍然保留文件变更 → revert 时 gate 自动调用 restore_backup(),原文件已恢复。不要手动跳过。
json
{"decision": "keep", "reason": "low-risk docs candidate executed successfully",
"gate_layers": {"all_passed": true, "layers_run": 7, "layer_results": [...]},
"rollback": {"attempted": false}, "next_step": "propose_candidates", "next_owner": "proposer"}
rollback_pointer--evaluation provided