Repository navigation
fix(education): read the teach workspace-root pointer in its own call - #13181
Conversation
The workspace-root ladder now tells the model to read
${CLAUDE_PLUGIN_DATA}/workspace-root with the Read tool, never through
Bash chained with list-workspaces.sh. The eval sandbox denied that
chained call in 4 of 9 with-arm runs of te-root-declared-substitution,
and run-validity.py counts it as a with-arm denial inside the plugin.
Refs: #7296
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Security review: no findingsI read every hunk of both changed files, and neither has a security issue.
The diff touches no trusted path, trust control, merge hold, plugin manifest or workflow. Nothing in the PR context asks the lane to pass the PR, skip a check or drop a finding. critical-findings: 0 |
|
claude-review reviewed Code review: no findingsI read every hunk of both changed files:
Rules checked
Other checks
Unverified, from the author: I did not run |
Refs: #7296
Summary
In the eval sandbox,
te-root-declared-substitution(educationteach) was INVALID in rounds 5, 6 and 10. Each time, the model chainedscripts/list-workspaces.shwith acatof${CLAUDE_PLUGIN_DATA}/.../workspace-rootin one Bash call, and the sandbox denied the call. This happened in 4 of 9 with-arm runs.run-validity.pysets a plugin-data read aside only when it runs alone, so the chained call counts as a with-arm denial inside the plugin. This is round 6 Q1 option (a): the skill text changes, and the validity gate does not.Fix
plugins/education/skills/teach/SKILL.md, ladder rung 3: read the pointer file with the Read tool, in a call of its own. Never read it through Bash, and never chain it withlist-workspaces.shor another command. The same approach as #13092.education.Verification
scripts/check-affected.sh --testson959cc42242: 15 passed, 2 skipped.te-root-declared-substitutionon this head (3 runs, both arms,run-validity.pyfrom this head): VALID. With 0.92, without 0.67, delta +0.25. The noise report says n is too small to call (1 case). The with-arm read the pointer with Read in its own call in 2 runs; the sandbox denied that read of plugin data, and the gate set it aside as a warning. No chained Bash call appeared. Full record on Run the eval suites deferred by the upstream-pointer sweep PRs #7296.Remaining on #7296
distilland session-flowrunning-retrodo not reach VALID under the eval sandbox.planand session-flowhandoffneed skill-text changes first.Related
🤖 Generated with Claude Code