






















@@ -6,6 +6,7 @@ import {
66runBarnacleAutoResponse,
77} from "../../scripts/github/barnacle-auto-response.mjs";
88import {
9+PROOF_OVERRIDE_LABEL,
910PROOF_SUFFICIENT_LABEL,
1011PROOF_SUPPLIED_LABEL,
1112} from "../../scripts/github/real-behavior-proof-policy.mjs";
@@ -716,7 +717,7 @@ describe("barnacle-auto-response", () => {
716717expect(calls.update).toStrictEqual([]);
717718});
718719719-it("removes stale proof labels when override is present", async () => {
720+it("removes stale structural proof labels but preserves sufficient proof when override is present", async () => {
720721const { calls, github } = barnacleGithub([file("src/gateway/server.ts")]);
721722722723await runBarnacleAutoResponse({
@@ -726,7 +727,7 @@ describe("barnacle-auto-response", () => {
726727candidateLabels.mockOnlyProof,
727728PROOF_SUPPLIED_LABEL,
728729PROOF_SUFFICIENT_LABEL,
729-"proof: override",
730+PROOF_OVERRIDE_LABEL,
730731]),
731732core: {
732733info: () => undefined,
@@ -737,11 +738,38 @@ describe("barnacle-auto-response", () => {
737738expectedRemoveLabel(123, candidateLabels.needsRealBehaviorProof),
738739expectedRemoveLabel(123, candidateLabels.mockOnlyProof),
739740expectedRemoveLabel(123, PROOF_SUPPLIED_LABEL),
740-expectedRemoveLabel(123, PROOF_SUFFICIENT_LABEL),
741741]);
742742expect(calls.update).toStrictEqual([]);
743743});
744744745+it("preserves manually applied sufficient proof label when override is added", async () => {
746+const { calls, github } = barnacleGithub([file("src/gateway/server.ts")]);
747+748+await runBarnacleAutoResponse({
749+ github,
750+context: barnacleContext(
751+{
752+body: realBehaviorProofBody(
753+"",
754+),
755+},
756+[PROOF_OVERRIDE_LABEL, PROOF_SUFFICIENT_LABEL],
757+{
758+action: "labeled",
759+label: { name: PROOF_OVERRIDE_LABEL },
760+sender: { login: "maintainer", type: "User" },
761+},
762+),
763+core: {
764+info: () => undefined,
765+},
766+});
767+768+expect(calls.removeLabel).toEqual([]);
769+expect(calls.addLabels).toEqual([]);
770+expect(calls.update).toEqual([]);
771+});
772+745773it("removes stale negative proof labels and adds supplied when proof is present", async () => {
746774const { calls, github } = barnacleGithub([file("src/gateway/server.ts")]);
747775@@ -887,6 +915,24 @@ describe("barnacle-auto-response", () => {
887915expect(calls.removeLabel).toEqual([]);
888916});
889917918+it("preserves sufficient proof on unrelated label events even without body proof", async () => {
919+const { calls, github } = barnacleGithub([file("src/gateway/server.ts")]);
920+921+await runBarnacleAutoResponse({
922+ github,
923+context: barnacleContext({}, [PROOF_SUFFICIENT_LABEL], {
924+action: "labeled",
925+label: { name: "status: ready for maintainer look" },
926+sender: { login: "openclaw-clawsweeper[bot]", type: "Bot" },
927+}),
928+core: {
929+info: () => undefined,
930+},
931+});
932+933+expect(calls.removeLabel).toEqual([]);
934+});
935+890936it("does not let Barnacle veto ClawSweeper's sufficient proof label add", async () => {
891937const { calls, github } = barnacleGithub([file("src/gateway/server.ts")]);
892938此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。