diff --git a/plugins/ship-check/agents/bug-checker.md b/plugins/ship-check/agents/bug-checker.md index 2f2d43e..09c6eaa 100644 --- a/plugins/ship-check/agents/bug-checker.md +++ b/plugins/ship-check/agents/bug-checker.md @@ -148,6 +148,7 @@ Return a structured summary to the orchestrator: ``` Bug check complete: - Files checked: N +- Reviewed at: - Bugs found: N (M fixed, K flagged) - Flagged breakdown: (include only when K > 0) - Uncertain diagnosis: A @@ -164,6 +165,7 @@ Bug check complete: - Platform/encoding: G - Confidence: N high, M medium, K low - Tests: passing / N failures +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` ### Comment mode @@ -171,6 +173,7 @@ Bug check complete: ``` Bug check complete (comment mode): - Files checked: N +- Reviewed at: - Bugs found: N (M would-fix, K flagged) - Review posted: yes / no (0 findings) - By dimension: @@ -182,4 +185,5 @@ Bug check complete (comment mode): - Input validation: F - Platform/encoding: G - Confidence: N high, M medium, K low +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` diff --git a/plugins/ship-check/agents/code-quality-reviewer.md b/plugins/ship-check/agents/code-quality-reviewer.md index 9389617..75f4559 100644 --- a/plugins/ship-check/agents/code-quality-reviewer.md +++ b/plugins/ship-check/agents/code-quality-reviewer.md @@ -122,6 +122,7 @@ Return a structured summary to the orchestrator: ``` Code quality complete: - Files reviewed: N +- Reviewed at: - Findings: N total, all fixed - By category: - Naming: A @@ -131,6 +132,7 @@ Code quality complete: - Module conventions: E - Concision: F - Tests: passing / N failures +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` ### Comment mode @@ -138,6 +140,7 @@ Code quality complete: ``` Code quality complete (comment mode): - Files reviewed: N +- Reviewed at: - Findings: N total, all commented - Review posted: yes / no (0 findings) - By category: @@ -147,4 +150,5 @@ Code quality complete (comment mode): - Simplicity: D - Module conventions: E - Concision: F +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` diff --git a/plugins/ship-check/agents/pr-reviewer.md b/plugins/ship-check/agents/pr-reviewer.md index f7258b7..1755ea3 100644 --- a/plugins/ship-check/agents/pr-reviewer.md +++ b/plugins/ship-check/agents/pr-reviewer.md @@ -145,6 +145,7 @@ Return a structured summary to the orchestrator: ``` PR Review complete: - Files reviewed: N +- Reviewed at: - Findings: N total (M fixed, K flagged) - Flagged breakdown: (include only when K > 0) - Uncertain diagnosis: A @@ -158,6 +159,7 @@ PR Review complete: - Stale paths: E (or "N/A — no file moves/renames") - Tests: passing / N failures - Verdict: ship / ship-with-minor-fixes / needs-changes +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` ### Comment mode @@ -165,6 +167,7 @@ PR Review complete: ``` PR Review complete (comment mode): - Files reviewed: N +- Reviewed at: - Findings: N total (M would-fix, K flagged) - Review posted: yes / no (0 findings) - By dimension: @@ -174,4 +177,5 @@ PR Review complete (comment mode): - Feature surface docs: D (or "N/A") - Stale paths: E (or "N/A") - Verdict: ship / ship-with-minor-fixes / needs-changes +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` diff --git a/plugins/ship-check/agents/test-auditor.md b/plugins/ship-check/agents/test-auditor.md index a0f328f..a1b9c81 100644 --- a/plugins/ship-check/agents/test-auditor.md +++ b/plugins/ship-check/agents/test-auditor.md @@ -118,6 +118,7 @@ Return a structured summary to the orchestrator: ``` Test audit complete: - Test files audited: N +- Reviewed at: - Findings: N total (M fixed) - By category: - Two-bar violations: A @@ -129,6 +130,7 @@ Test audit complete: - Tests written: J - Mutation-tested: L - Suite: passing / N failures (total test count) +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` ### Comment mode @@ -136,6 +138,7 @@ Test audit complete: ``` Test audit complete (comment mode): - Test files audited: N +- Reviewed at: - Findings: N total, all commented - Review posted: yes / no (0 findings) - By category: @@ -146,4 +149,5 @@ Test audit complete (comment mode): - Coverage regressions: E - Coverage gaps reported: K - Mutation-tested: L (diagnostic only) +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` diff --git a/plugins/ship-check/skills/bug-check/SKILL.md b/plugins/ship-check/skills/bug-check/SKILL.md index c38e64a..c36457f 100644 --- a/plugins/ship-check/skills/bug-check/SKILL.md +++ b/plugins/ship-check/skills/bug-check/SKILL.md @@ -425,6 +425,7 @@ yours. Convention violations in your fixes ship unchecked. ``` Bug check complete: - Files checked: N +- Reviewed at: - Bugs found: N (M fixed, K flagged for review) - By dimension: - Description mismatch: A @@ -435,8 +436,23 @@ Bug check complete: - Input validation: F - Platform/encoding: G - Confidence: N high, M medium, K low +- Dismissed: N (proof-of-dismissal one-liners follow — or "none") ``` +**Output honesty (both modes):** + +- **State what you reviewed.** The summary names the PR head SHA actually + reviewed — a review that doesn't say what it checked is indistinguishable + from one that checked nothing. It also lets the orchestrator cross-check + what this phase actually saw against the delta-review baseline it records + itself at Phase 4 close. +- **Close with proof of dismissal.** One line per suspicion you seriously + considered and dropped, with the reason it doesn't bite — or "none". This + extends "No silent skipping" to the negative space: findings you confirmed + go in the report, and suspicions you cleared go in the dismissal list — + without them, "no findings" could mean a clean diff or an unexamined one, + and the reader can't tell which. + ## Comment mode When the dispatch prompt says **COMMENT MODE**, do not edit files, commit, or push. @@ -459,7 +475,7 @@ gh api "repos/OWNER_REPO/pulls/PR_NUMBER/reviews" \ --method POST --input - <<'REVIEW' { "event": "COMMENT", - "body": "## Phase 4: Bug Check\n\nN bugs found across M files.\nConfidence: A high, B medium, C low\n\n---\n*🔍 ship-check · bug-check · MODEL_ID*", + "body": "## Phase 4: Bug Check\n\nN bugs found across M files. Reviewed at .\nConfidence: A high, B medium, C low\n\nDismissed: \n\n---\n*🔍 ship-check · bug-check · MODEL_ID*", "comments": [ { "path": "src/file.ts", @@ -474,7 +490,10 @@ REVIEW Replace `OWNER_REPO` and `PR_NUMBER` with values from the dispatch prompt. Replace `MODEL_ID` with your own model ID (from your system prompt). -5. **If 0 findings**, skip the API call — report "0 findings" to the orchestrator only. +5. **If 0 findings and no dismissals**, skip the API call — report "0 findings" + to the orchestrator only. With 0 findings but cleared suspicions, post a + body-only review carrying the dismissal list — that is the artifact that lets + a PR reader tell a clean diff from an unexamined one. 6. **Footer on every comment.** Append `\n\n---\n*🔍 ship-check · bug-check · MODEL_ID*` to the review body AND each inline comment body. 7. **Format each inline comment body** as: diff --git a/plugins/ship-check/skills/code-quality/SKILL.md b/plugins/ship-check/skills/code-quality/SKILL.md index 51a1a86..1ac4ed9 100644 --- a/plugins/ship-check/skills/code-quality/SKILL.md +++ b/plugins/ship-check/skills/code-quality/SKILL.md @@ -314,6 +314,18 @@ clause is load-bearing, keep it and flag the uncertainty instead of trimming. 3. **Run tests** after all fixes to confirm no behavior change. 4. **Summarize**: files touched, count by category, test status. +**Output honesty (both modes):** + +- **State what you reviewed.** The summary names the PR head SHA actually + reviewed — a review that doesn't say what it checked is indistinguishable + from one that checked nothing. It also lets the orchestrator cross-check + what this phase actually saw against the delta-review baseline it records + itself at Phase 4 close. +- **Close with proof of dismissal.** One line per suspicion you seriously + considered and dropped, with the reason it doesn't bite — or "none". The + clean-bill claims are part of the review: without them, "no findings" could + mean a clean diff or an unexamined one, and the reader can't tell which. + ## Comment mode When the dispatch prompt says **COMMENT MODE**, do not edit files, commit, or push. @@ -334,7 +346,7 @@ gh api "repos/OWNER_REPO/pulls/PR_NUMBER/reviews" \ --method POST --input - <<'REVIEW' { "event": "COMMENT", - "body": "## Phase 2: Code Quality\n\nN findings across M files.\n\n---\n*🔍 ship-check · code-quality · MODEL_ID*", + "body": "## Phase 2: Code Quality\n\nN findings across M files. Reviewed at .\n\nDismissed: \n\n---\n*🔍 ship-check · code-quality · MODEL_ID*", "comments": [ { "path": "src/file.ts", @@ -349,7 +361,10 @@ REVIEW Replace `OWNER_REPO` and `PR_NUMBER` with values from the dispatch prompt. Replace `MODEL_ID` with your own model ID (from your system prompt). -4. **If 0 findings**, skip the API call — report "0 findings" to the orchestrator only. +4. **If 0 findings and no dismissals**, skip the API call — report "0 findings" + to the orchestrator only. With 0 findings but cleared suspicions, post a + body-only review carrying the dismissal list — that is the artifact that lets + a PR reader tell a clean diff from an unexamined one. 5. **Footer on every comment.** Append `\n\n---\n*🔍 ship-check · code-quality · MODEL_ID*` to the review body AND each inline comment body. 6. **Format each inline comment body** as: diff --git a/plugins/ship-check/skills/pr-review/SKILL.md b/plugins/ship-check/skills/pr-review/SKILL.md index 1f10df3..6c5f07a 100644 --- a/plugins/ship-check/skills/pr-review/SKILL.md +++ b/plugins/ship-check/skills/pr-review/SKILL.md @@ -222,6 +222,18 @@ comment mode. 5. **Summarize**: count by dimension, test status, verdict (ship / ship-with-minor-fixes / needs-changes). +**Output honesty (both modes):** + +- **State what you reviewed.** The summary names the PR head SHA actually + reviewed — a review that doesn't say what it checked is indistinguishable + from one that checked nothing. It also lets the orchestrator cross-check + what this phase actually saw against the delta-review baseline it records + itself at Phase 4 close. +- **Close with proof of dismissal.** One line per suspicion you seriously + considered and dropped, with the reason it doesn't bite — or "none". The + clean-bill claims are part of the review: without them, "no findings" could + mean a clean diff or an unexamined one, and the reader can't tell which. + ## Comment mode When the dispatch prompt says **COMMENT MODE**, do not edit files, commit, or push. @@ -245,7 +257,7 @@ gh api "repos/OWNER_REPO/pulls/PR_NUMBER/reviews" \ --method POST --input - <<'REVIEW' { "event": "COMMENT", - "body": "## Phase 1: PR Review\n\nN findings across M files.\n\n**Verdict**: ship / ship-with-minor-fixes / needs-changes\n\n---\n*🔍 ship-check · pr-review · MODEL_ID*", + "body": "## Phase 1: PR Review\n\nN findings across M files. Reviewed at .\n\n**Verdict**: ship / ship-with-minor-fixes / needs-changes\n\nDismissed: \n\n---\n*🔍 ship-check · pr-review · MODEL_ID*", "comments": [ { "path": "src/file.ts", @@ -260,7 +272,10 @@ REVIEW Replace `OWNER_REPO` and `PR_NUMBER` with values from the dispatch prompt. Replace `MODEL_ID` with your own model ID (from your system prompt). -5. **If 0 findings**, skip the API call — report "0 findings" to the orchestrator only. +5. **If 0 findings and no dismissals**, skip the API call — report "0 findings" + to the orchestrator only. With 0 findings but cleared suspicions, post a + body-only review carrying the dismissal list — that is the artifact that lets + a PR reader tell a clean diff from an unexamined one. 6. **For findings without a specific line** (e.g., missing docs, cross-cutting concerns), put them in the review `body` rather than as inline comments. 7. **Footer on every comment.** Append `\n\n---\n*🔍 ship-check · pr-review · MODEL_ID*` diff --git a/plugins/ship-check/skills/test-audit/SKILL.md b/plugins/ship-check/skills/test-audit/SKILL.md index 1558169..a8f168d 100644 --- a/plugins/ship-check/skills/test-audit/SKILL.md +++ b/plugins/ship-check/skills/test-audit/SKILL.md @@ -327,6 +327,18 @@ This proves the test is load-bearing, not decorative. - **Summarize**: files audited, count by category, tests mutation-verified, coverage gaps found and tests written. +**Output honesty (both modes):** + +- **State what you reviewed.** The summary names the PR head SHA actually + reviewed — a review that doesn't say what it checked is indistinguishable + from one that checked nothing. It also lets the orchestrator cross-check + what this phase actually saw against the delta-review baseline it records + itself at Phase 4 close. +- **Close with proof of dismissal.** One line per suspicion you seriously + considered and dropped, with the reason it doesn't bite — or "none". The + clean-bill claims are part of the review: without them, "no findings" could + mean a clean diff or an unexamined one, and the reader can't tell which. + ## Comment mode When the dispatch prompt says **COMMENT MODE**, do not edit files, write tests, commit, @@ -356,7 +368,7 @@ gh api "repos/OWNER_REPO/pulls/PR_NUMBER/reviews" \ --method POST --input - <<'REVIEW' { "event": "COMMENT", - "body": "## Phase 3: Test Audit\n\nN test quality findings, K coverage gaps across M files.\n\n---\n*🔍 ship-check · test-audit · MODEL_ID*", + "body": "## Phase 3: Test Audit\n\nN test quality findings, K coverage gaps across M files. Reviewed at .\n\nDismissed: \n\n---\n*🔍 ship-check · test-audit · MODEL_ID*", "comments": [ { "path": "src/file.test.ts", @@ -376,7 +388,10 @@ REVIEW Replace `OWNER_REPO` and `PR_NUMBER` with values from the dispatch prompt. Replace `MODEL_ID` with your own model ID (from your system prompt). -4. **If 0 findings**, skip the API call — report "0 findings" to the orchestrator only. +4. **If 0 findings and no dismissals**, skip the API call — report "0 findings" + to the orchestrator only. With 0 findings but cleared suspicions, post a + body-only review carrying the dismissal list — that is the artifact that lets + a PR reader tell a clean diff from an unexamined one. 5. **Footer on every comment.** Append `\n\n---\n*🔍 ship-check · test-audit · MODEL_ID*` to the review body AND each inline comment body. 6. **Format each inline comment body** as: