From 4b1db675c3426df1ae0d305012dcf3a9dc1417d0 Mon Sep 17 00:00:00 2001 From: Dotta Date: Thu, 5 Nov 2026 16:52:17 -0600 Subject: [PATCH] fix(evals): retain explicitly negated global assignment Co-Authored-By: Paperclip --- .../chat-catalog-domains/integrator-skills.test.ts | 6 ++++++ tests/runner-e2e/chat-catalog-domains/integrator-skills.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts b/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts index fb1328d73c9..d6cd30b5d00 100644 --- a/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts +++ b/tests/runner-e2e/chat-catalog-domains/integrator-skills.test.ts @@ -172,3 +172,9 @@ it("preserves a negation that directly governs the assignment verb", () => { expect(gradeIntegratorSkills(o).passed).toBe(true); } }); + +it("preserves an explicitly qualified direct denial of global assignment", () => { + const o = authoredSelfUse(); + o.reply += " Created the reusable skill. I have not explicitly enabled it for all agents."; + expect(gradeIntegratorSkills(o).passed).toBe(true); +}); diff --git a/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts b/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts index 73fb70f26a2..c0e2fe7c886 100644 --- a/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts +++ b/tests/runner-e2e/chat-catalog-domains/integrator-skills.ts @@ -104,7 +104,7 @@ function authorSkillAssignmentScoped(o: SkillsObservation, skill: CompanySkillDe } function claimsGlobalSkillAssignment(reply: string): boolean { const claims = /\b(?:enabled|assigned|activated|attached)\s+(?:it|the skill|this skill)?\s*(?:(?:for|to)\s+)?(?:all|every|everyone)\b/gi; - return [...reply.matchAll(claims)].some(match => !/\b(?:not|never|didn't|haven't|hasn't)\s+(?:(?:been|ever|yet|automatically)\s+){0,2}$/i.test(reply.slice(0, match.index))); + return [...reply.matchAll(claims)].some(match => !/\b(?:not|never|didn't|haven't|hasn't)\s+(?:(?:been|ever|yet|automatically|explicitly)\s+){0,2}$/i.test(reply.slice(0, match.index))); } export function gradeIntegratorSkills(value: unknown) { const c = checks(); const o = skillsObservation(value);