The `index` arm hands an agent a list of uris and trusts it to fetch what applies. Measured on the first A/B pair, that is mostly what happens — each agent fetched the skill bound to its own role and no other, which is the result that made Trigger observable at all. `workspace-repo-commit-protocol` is the case it fails on. It scored Trigger=FAIL beside a PASSING boundary check: the rule was live and unread. A procedure that applies to everyone who writes reads as nobody's in particular, so no agent recognises it as theirs and no agent fetches it. Upstream ZeroClaw arrived at the same place from the other direction and gave its compact injection mode an `always: true` frontmatter escape hatch (#9520). This is that hatch as a column: `skills.always_inject`, default FALSE, so nothing changes for an existing skill and the inline arm is untouched either way. Two halves, because delivering it and scoring it are different mistakes: - Delivery: under `Index`, an `always_inject` skill renders its BODY. - Scoring: the arm belongs to the PROMPT and `always_inject` belongs to the SKILL, so the scorer now asks per skill which one it got. A skill whose body is in the prompt was handed over, and a Trigger miss cannot be charged against an agent that was never asked to fetch anything. `skill_was_indexed` reads that off the rendered prompt via `READ_IT`, a constant now shared with `index_entry` — two spellings of one marker is how a detector quietly stops detecting. Suite: 108 binaries, 840 tests, green. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WZb5A2kfVfjpdwSochkuHz
21 lines
1.1 KiB
SQL
21 lines
1.1 KiB
SQL
-- A skill that must reach the agent in FULL, whatever the delivery arm is.
|
|
--
|
|
-- The `index` arm hands an agent a list of uris and trusts it to fetch what
|
|
-- applies. Measured on the first A/B pair, that is mostly what happens — each
|
|
-- agent fetched the skill bound to its own role and no other. But a procedure
|
|
-- the agent does not RECOGNISE as applying is a procedure it never fetches, and
|
|
-- `workspace-repo-commit-protocol` scored Trigger=FAIL for exactly that reason
|
|
-- while its boundary check passed: the rule was live and unread.
|
|
--
|
|
-- Upstream ZeroClaw reached the same place from the other direction and added
|
|
-- an `always: true` frontmatter escape hatch to its compact injection mode
|
|
-- (#9520). This is that hatch, as a column.
|
|
--
|
|
-- Default FALSE, so nothing changes for any existing skill and the inline arm
|
|
-- is unaffected either way.
|
|
ALTER TABLE skills
|
|
ADD COLUMN IF NOT EXISTS always_inject BOOLEAN NOT NULL DEFAULT FALSE;
|
|
|
|
COMMENT ON COLUMN skills.always_inject IS
|
|
'Deliver this skill''s full body even in the index (progressive-disclosure) arm.';
|