403 lines
14 KiB
JSON
403 lines
14 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"decision",
|
|
"closeReason",
|
|
"confidence",
|
|
"summary",
|
|
"changeSummary",
|
|
"evidence",
|
|
"likelyOwners",
|
|
"risks",
|
|
"bestSolution",
|
|
"itemCategory",
|
|
"reproductionStatus",
|
|
"reproductionConfidence",
|
|
"requiresNewFeature",
|
|
"requiresNewConfigOption",
|
|
"requiresProductDecision",
|
|
"reproductionAssessment",
|
|
"solutionAssessment",
|
|
"reviewFindings",
|
|
"securityReview",
|
|
"realBehaviorProof",
|
|
"overallCorrectness",
|
|
"overallConfidenceScore",
|
|
"fixedRelease",
|
|
"fixedSha",
|
|
"fixedAt",
|
|
"closeComment",
|
|
"workCandidate",
|
|
"workConfidence",
|
|
"workPriority",
|
|
"workReason",
|
|
"workPrompt",
|
|
"workClusterRefs",
|
|
"workValidation",
|
|
"workLikelyFiles"
|
|
],
|
|
"properties": {
|
|
"decision": {
|
|
"type": "string",
|
|
"enum": ["close", "keep_open"]
|
|
},
|
|
"closeReason": {
|
|
"type": "string",
|
|
"enum": [
|
|
"implemented_on_main",
|
|
"cannot_reproduce",
|
|
"clawhub",
|
|
"duplicate_or_superseded",
|
|
"not_actionable_in_repo",
|
|
"incoherent",
|
|
"stale_insufficient_info",
|
|
"none"
|
|
]
|
|
},
|
|
"confidence": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "Review verdict and rationale. Do not restate the PR diff, maintainer next action, risk list, or best-solution text."
|
|
},
|
|
"changeSummary": {
|
|
"type": "string",
|
|
"description": "Neutral one-sentence summary of the requested change or PR diff. For pull requests, describe what the branch changes, not the merge verdict, maintainer next action, risk, or whether the PR is redundant."
|
|
},
|
|
"evidence": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["label", "detail", "file", "line", "command", "sha"],
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"detail": {
|
|
"type": "string"
|
|
},
|
|
"file": {
|
|
"type": ["string", "null"]
|
|
},
|
|
"line": {
|
|
"type": ["integer", "null"]
|
|
},
|
|
"command": {
|
|
"type": ["string", "null"]
|
|
},
|
|
"sha": {
|
|
"type": ["string", "null"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"likelyOwners": {
|
|
"type": "array",
|
|
"description": "People most likely connected to the relevant code or behavior, based on git blame/log/PR history. Include multiple candidates when responsibility is shared or ambiguous.",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["person", "role", "reason", "commits", "files", "confidence"],
|
|
"properties": {
|
|
"person": {
|
|
"type": "string",
|
|
"description": "GitHub login, maintainer handle, or commit author display name. Do not include email addresses."
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"description": "Neutral role in the history, such as introduced behavior, recent maintainer, reviewer, merger, adjacent owner, or likely follow-up owner."
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"description": "Brief evidence-backed reason this person is relevant."
|
|
},
|
|
"commits": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"confidence": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"risks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bestSolution": {
|
|
"type": "string",
|
|
"description": "The best possible product/code/docs direction for this item, whether the item should close or stay open. Do not repeat the change summary, workReason, or risk list."
|
|
},
|
|
"itemCategory": {
|
|
"type": "string",
|
|
"enum": [
|
|
"bug",
|
|
"regression",
|
|
"feature",
|
|
"skill",
|
|
"docs",
|
|
"cleanup",
|
|
"support",
|
|
"admin",
|
|
"security",
|
|
"unclear"
|
|
],
|
|
"description": "Primary item category. Use bug only for broken existing behavior with an already-defined expected behavior; use skill for optional skill bundles or skill-only pull requests; feature/config/product changes are not bugs."
|
|
},
|
|
"reproductionStatus": {
|
|
"type": "string",
|
|
"enum": ["reproduced", "source_reproducible", "not_reproduced", "unclear", "not_applicable"],
|
|
"description": "Structured reproduction state. Use reproduced only when there is a high-confidence current-main reproduction path for a bug."
|
|
},
|
|
"reproductionConfidence": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
},
|
|
"requiresNewFeature": {
|
|
"type": "boolean",
|
|
"description": "True when solving the item would add a new user-facing capability or mode instead of fixing broken existing behavior."
|
|
},
|
|
"requiresNewConfigOption": {
|
|
"type": "boolean",
|
|
"description": "True when solving the item would require adding a config option, CLI flag, setting, environment variable, or policy knob."
|
|
},
|
|
"requiresProductDecision": {
|
|
"type": "boolean",
|
|
"description": "True when solving the item requires maintainer product/UX/policy judgment before implementation."
|
|
},
|
|
"reproductionAssessment": {
|
|
"type": "string",
|
|
"description": "Answer this exact question for public review details: Do we have a high-confidence way to reproduce the issue? Include yes/no/unclear/not applicable and the evidence-backed reason."
|
|
},
|
|
"solutionAssessment": {
|
|
"type": "string",
|
|
"description": "Answer this exact question for public review details: Is this the best way to solve the issue? Include yes/no/unclear/not applicable and the evidence-backed rationale or safer alternative."
|
|
},
|
|
"reviewFindings": {
|
|
"type": "array",
|
|
"description": "Codex /review-style PR findings introduced by the proposed patch. Use an empty array for issues, close decisions, or PRs where there is no discrete actionable bug.",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"title",
|
|
"body",
|
|
"priority",
|
|
"confidenceScore",
|
|
"file",
|
|
"lineStart",
|
|
"lineEnd"
|
|
],
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Short imperative title, at most 80 characters."
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "Brief Markdown explanation of the concrete bug and why the author should fix it."
|
|
},
|
|
"priority": {
|
|
"type": "integer",
|
|
"enum": [0, 1, 2, 3],
|
|
"description": "0=P0 critical, 1=P1 high, 2=P2 normal, 3=P3 low."
|
|
},
|
|
"confidenceScore": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"file": {
|
|
"type": "string",
|
|
"description": "Repository-relative file path for the changed line."
|
|
},
|
|
"lineStart": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"lineEnd": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"securityReview": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Dedicated security and supply-chain review for the item. For PRs, summarize whether the diff introduces security-sensitive concerns. For issues, use not_applicable unless the issue itself is security-sensitive.",
|
|
"required": ["status", "summary", "concerns"],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["cleared", "needs_attention", "not_applicable"]
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "One concise sentence explaining the security review result."
|
|
},
|
|
"concerns": {
|
|
"type": "array",
|
|
"description": "Concrete security or supply-chain concerns found during the dedicated pass. Empty when cleared or not applicable.",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["title", "body", "severity", "confidenceScore", "file", "line"],
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Short concern title, at most 80 characters."
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "Brief explanation of the observable security risk and why it matters."
|
|
},
|
|
"severity": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
},
|
|
"confidenceScore": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"file": {
|
|
"type": ["string", "null"],
|
|
"description": "Repository-relative file path when tied to a file; null for issue-wide or discussion-only concerns."
|
|
},
|
|
"line": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 1,
|
|
"description": "Relevant line when tied to a specific file; null when not applicable."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"realBehaviorProof": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "Dedicated PR proof assessment. For external PRs, after-fix evidence from a real setup is required; tests, mocks, snapshots, lint, typechecks, and CI are supplemental only.",
|
|
"required": ["status", "summary", "evidenceKind", "needsContributorAction"],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"sufficient",
|
|
"missing",
|
|
"mock_only",
|
|
"insufficient",
|
|
"not_applicable",
|
|
"override"
|
|
]
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "One concise sentence explaining whether the PR body contains after-fix real behavior proof. Do not call screenshot-only proof sufficient for browser runtime, CSP, CORS, network, or security changes when it only claims no console error or violation is visible."
|
|
},
|
|
"evidenceKind": {
|
|
"type": "string",
|
|
"description": "Use screenshot only for directly visible UI or flow proof. For browser runtime, CSP, CORS, network, or security proof, prefer terminal, logs, live_output, or linked_artifact unless the media visibly includes the diagnostic output.",
|
|
"enum": [
|
|
"screenshot",
|
|
"recording",
|
|
"terminal",
|
|
"logs",
|
|
"live_output",
|
|
"linked_artifact",
|
|
"none",
|
|
"not_applicable"
|
|
]
|
|
},
|
|
"needsContributorAction": {
|
|
"type": "boolean",
|
|
"description": "True when the contributor must add or improve real behavior proof before merge. This must be false for sufficient, override, and not_applicable statuses."
|
|
}
|
|
}
|
|
},
|
|
"overallCorrectness": {
|
|
"type": "string",
|
|
"enum": ["patch is correct", "patch is incorrect", "not a patch"],
|
|
"description": "Codex /review-style overall patch verdict. Use not a patch for issues and non-PR items."
|
|
},
|
|
"overallConfidenceScore": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"fixedRelease": {
|
|
"type": ["string", "null"],
|
|
"description": "Release tag/version where the issue was fixed, if known. Use null when not applicable or not known."
|
|
},
|
|
"fixedSha": {
|
|
"type": ["string", "null"],
|
|
"description": "Specific commit SHA that fixed or proves the issue is implemented, if known. Use null when not applicable or not known."
|
|
},
|
|
"fixedAt": {
|
|
"type": ["string", "null"],
|
|
"description": "ISO-8601 commit or merge timestamp for the fix/proof SHA when known. Required for implemented_on_main when fixedRelease is null so maintainers know when it became fixed on main."
|
|
},
|
|
"closeComment": {
|
|
"type": "string"
|
|
},
|
|
"workCandidate": {
|
|
"type": "string",
|
|
"enum": ["none", "manual_review", "queue_fix_pr"],
|
|
"description": "Whether this item should become a manually promoted ClawSweeper repair job. Use queue_fix_pr only for concrete actionable repairs; use manual_review or none for maintainer/product/security review or normal PR validation."
|
|
},
|
|
"workConfidence": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
},
|
|
"workPriority": {
|
|
"type": "string",
|
|
"enum": ["high", "medium", "low"]
|
|
},
|
|
"workReason": {
|
|
"type": "string",
|
|
"description": "Short reason this item is or is not a safe fix-PR candidate. For pull requests that need human handling, make this the maintainer next action and do not restate bestSolution."
|
|
},
|
|
"workPrompt": {
|
|
"type": "string",
|
|
"description": "Maintainer prompt to hand to the ClawSweeper repair lane if the item is promoted."
|
|
},
|
|
"workClusterRefs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"workValidation": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"workLikelyFiles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|