Skip to content

Harden author-side payload gating - #34

Merged
DocksDocks merged 1 commit into
mainfrom
33-harden-author-side-payload-gating
Aug 25, 2026
Merged

Harden author-side payload gating#34
DocksDocks merged 1 commit into
mainfrom
33-harden-author-side-payload-gating

Conversation

@DocksDocks

Copy link
Copy Markdown
Owner

Closes #33

Implements the reviewed plan #33:

  • matcher - scripts/skills/no-author-scripts.mjs derives author-script tails from the on-disk scripts/ inventory at runtime and flags them under any prefix (bare, ./, ../, variables, command substitutions, alternate clone roots) with no exemption logic; bundled plugin-internal scripts (write-skill/scripts/skill-guard.mjs, plan-lifecycle scripts/plan.mjs) never match because their filenames are not author tails.
  • presence - a descriptor that declares a skills or agents root whose directory is missing now fails the gate explicitly instead of silently skipping.
  • scorer - agent-scorer output is corroborated: subprocess exit status, row names against on-disk agents, duplicates, non-finite scores, and empty-declared-root vacuity all fail; seven-case unit suite added and registered as unit-agent-score-vacuity.
  • fixture - the ci-plugin-targeting stub scorer printed .md-suffixed names the real scorer never emits; aligned (drift exposed by the new corroboration).
  • hook claim (probe, user-authorized) - official Codex documentation confirms CLAUDE_PLUGIN_ROOT is a compatibility alias for PLUGIN_ROOT; shipped hook files unchanged.

Reviews: plan review rounds 1-3 repair (tail derivation, doc-grounded hook step, test-contracts registration), round 4 pass; code review round 1 fixes-required (HIGH: prefix exemption bypass, fixed by deleting the exemption), round 2 pass.

Verification: full node scripts/ci.mjs exit 0; six evasion spellings fail the guard and the bundled reference passes; unit-agent-score-vacuity 7/7; targeting contracts green.

Implements the reviewed plan #33:

- no-author-scripts matcher derives author tails from the on-disk scripts/
  inventory and flags them under any prefix, with no exemption logic;
  bundled plugin-internal scripts never match because their filenames are
  not author tails
- declared skills/agents roots that are missing now fail the gate instead
  of silently skipping
- agent-scorer output is corroborated: exit status, row names vs on-disk
  agents, duplicates, non-finite scores, empty-root vacuity; seven-case
  unit suite registered as unit-agent-score-vacuity
- ci-plugin-targeting stub scorer aligned with the real scorer's
  stripped-name output (fixture drift exposed by the new corroboration)

Closes #33
@DocksDocks DocksDocks linked an issue Aug 25, 2026 that may be closed by this pull request
@DocksDocks
DocksDocks merged commit b1686df into main Aug 25, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Harden author-side payload gating

1 participant