-
Notifications
You must be signed in to change notification settings - Fork 0
fix: 声明级流程走查修复(4 子代理审计结论落地) #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| { | ||
| "$schema": "https://json-schema.org/draft/2020-12/schema", | ||
| "$id": "backlog-entry", | ||
| "title": "backlog-entry", | ||
| "description": "backlog 条目契约(team-collaboration interfaces.backlog.entry_schema)。maintenance_wave.trigger 引用的 severity/aging 与 producer_gate 延期判定的 defer_condition 以此为字段真源。", | ||
| "type": "object", | ||
| "required": ["id", "source", "severity", "created_at"], | ||
| "properties": { | ||
| "id": {"type": "string", "description": "条目唯一标识(issue 编号或 curator 归并号)"}, | ||
| "source": {"type": "string", "enum": ["drift", "ct", "dependabot", "scorecard", "escape", "amendment", "owner"], | ||
| "description": "多写者来源(open 态由扫描器/提案者填;curator 归并时校验)"}, | ||
| "severity": {"type": "string", "enum": ["security", "high", "normal", "low"], | ||
| "description": "triage 时 curator 标注;security 级触发 maintenance_wave 并升 owner_ratify(attention-ledger dep_and_schema_owner_ratify)"}, | ||
| "created_at": {"type": "string", "format": "date-time", | ||
| "description": "入 backlog 时间戳——aging 指标(backlog_aging_p50/p95 与 >30d 触发)的计算基准"}, | ||
| "evidence": {"type": "string", "description": "指标/证据/期望状态引用(issue 链接或 drift 报告锚点)"}, | ||
| "expected_state_ref": {"type": "string", "description": "期望状态引用(governance/expected-state.json 锚点,drift 类必填)"}, | ||
| "disposition": {"type": "string", "enum": ["open", "consumed", "rejected", "deferred"], | ||
| "description": "producer_gate 处置结果;rejected 须附 reason;deferred 须附 defer_condition(无第四态)"}, | ||
| "reason": {"type": "string", "description": "disposition=rejected 时的驳回理由(必填)"}, | ||
| "defer_condition": {"type": "string", "description": "disposition=deferred 时的机器可判定条件(必填;到期由 curator 机制扫描重排 top-k)"} | ||
|
Comment on lines
+20
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3. Empty disposition metadata accepted The schema accepts reason: "" for rejected entries and defer_condition: "" for deferred entries because both fields are unconstrained strings. These values satisfy required while violating the lifecycle’s mandatory reason and machine-evaluable deferral condition. Agent Prompt
|
||
| }, | ||
| "allOf": [ | ||
| { | ||
| "if": {"properties": {"disposition": {"const": "rejected"}}}, | ||
| "then": {"required": ["reason"]} | ||
|
Comment on lines
+25
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1. Disposition conditions match absence Both conditional schemas treat a missing disposition as a match, so an otherwise valid open entry is incorrectly required to contain both reason and defer_condition. This makes the newly declared backlog contract reject entries before producer-gate disposition. Agent Prompt
|
||
| }, | ||
| { | ||
| "if": {"properties": {"disposition": {"const": "deferred"}}}, | ||
| "then": {"required": ["defer_condition"]} | ||
| } | ||
| ] | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -128,6 +128,9 @@ scenarios: | |
| - {path: "standards/flows.yaml#maintain_loop.maintenance_wave.trigger", op: contains, value: 30d} | ||
| - {path: "standards/flows.yaml#maintain_loop.maintenance_wave.executor", op: contains, value: curator} | ||
| - {path: "standards/flows.yaml#maintain_loop.maintenance_wave.acceptance", op: contains, value: pre_approved} | ||
| - {path: "standards/team-collaboration.yaml#teams.delivery_squad.lifecycle.trigger", op: contains, value: maintenance_wave.trigger} | ||
| - {path: "registry/teams/dev-wave.yaml#lifecycle.trigger", op: contains, value: maintenance_wave.trigger} | ||
| - {path: "standards/team-collaboration.yaml#interfaces.backlog.entry_schema", op: exists} | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 4. Schema assertion checks only scalar The new S15 assertion verifies only that entry_schema contains a non-null scalar, not that the referenced file exists or parses as JSON Schema. Deleting, misspelling, or corrupting backlog-entry.json therefore leaves the advertised anti-regression scenario and repository validator green. Agent Prompt
|
||
| ct_refs: [] | ||
| S16-owner-control: | ||
| class: regression | ||
|
|
@@ -141,6 +144,8 @@ scenarios: | |
| - {path: "standards/team-collaboration.yaml#flow.event_producers.card.paused", op: exists} | ||
| - {path: "standards/team-collaboration.yaml#flow.event_producers.card.aborted", op: exists} | ||
| - {path: "standards/observability.yaml#control_surface.verbs", op: contains_all, value: [pause, resume, abort]} | ||
| - {path: "standards/flows.yaml#owner_control.verbs", op: contains_all, value: [pause, resume, abort]} | ||
| - {path: "standards/flows.yaml#owner_control.verbs.resume.event", op: contains, value: card.resumed} | ||
| ct_refs: [] | ||
| S17-unratified-intent-blocked: | ||
| class: control | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2. Drift reference remains optional
🐞 Bug≡ CorrectnessAgent Prompt
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools