Repository navigation
feat(architecture): concise skill text measured by evals, plus outcome cases and probes - #7437
Conversation
…e cases and probes Shorter descriptions for the eleven model-invoked skills and tighter bodies for map-data, map-deployment and map-flow; the other bodies keep the main text. Ten outcome eval cases (one per map-* skill and record-decision), frozen trigger-probe sets for all eleven skills, and stricter improve graders. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
️✅ There are no secrets present in this pull request anymore.If these secrets were true positive and are still valid, we highly recommend you to revoke them. 🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request. |
…map-deployment wording The mx and my scaffolds assemble their fake secret values at run time so secret scanners do not flag them; the generated files are unchanged. The no-secret fail samples drop the key text. map-deployment keeps main's text for the CloudFormation pairing note and the Terraform resolution gotcha. 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 finished @kyle-sexton's task in 3m 17s —— View job Security review complete
No security issues found. This PR is almost entirely eval scaffolding/fixtures, probe sets, grader regex tightening, and skill-body reflow/wording changes (no production script logic changed). I checked the areas most likely to carry risk:
claude-lane-summary: lane=claude-security-review sha=9c76a3d7aa1c1a7a6c608d7ddd28a3da70ebc42e run=38511850024 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9c76a3d7aa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
claude-security-review has reviewed this pull request through 74a1c24; a later push is reviewed from there. |
…leaks The branch's first commit carried the canary values inline; the later commit assembles them at run time. Pin the six findings to that commit. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 0s —— View job Security review complete
Scope: incremental — only No security issues found. The diff adds six
Every flagged value is an explicitly-labeled claude-lane-summary: lane=claude-security-review sha=020b2e0d3b05751e43f8d91e0e045fded3216467 run=38512239540 |
|
Claude finished @kyle-sexton's task in 4m 48s —— View job Code review complete
This repo runs a dedicated security lane ( SKILL.md changes. Diffed all 11 bodies ( 3 findings posted inline:
All three are in net-new eval fixtures (not pre-existing), scoped to grader correctness rather than production code; no other correctness issues found in the scaffolds, probes, or changelog fragment. claude-lane-summary: lane=claude-review sha=020b2e0d3b05751e43f8d91e0e045fded3216467 run=38512239502 |
|
claude-review has reviewed this pull request through 74a1c24; a later push is reviewed from there. |
Shell-write graders now catch interpreter writes (python3 -c, node -e), quoted targets, perl -i and >| (ml), and more extensions (rd). The mp reply grader adds the missing n't guard plus a not_contains grader for negated unresolved claims. Each fix has must-fail samples. Refs #7438 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 7m 48s —— View job Code review complete
Scope: incremental — only the 9 files this lane's instructions named, as diffed since 1 finding posted inline:
What I verified and found sound:
Known limitation on this verification: this lane's permission mode denies all claude-lane-summary: lane=claude-review sha=c7acfae5b3ab18a101d0fbc11085af47566f90d6 run=38513337764 |
|
Claude finished @kyle-sexton's task in 1m 43s —— View job Security review complete
Scope: incremental — this lane previously reviewed No security issues found. This diff tightens four eval graders'
Findings on these changes:
claude-lane-summary: lane=claude-security-review sha=c7acfae5b3ab18a101d0fbc11085af47566f90d6 run=38513337751 |
The no-components-shell-write grader's python -c / node -e branch matched any mention of components.md, including read-only calls. Require the write/dump/mode group in the same call, either order, as the ml and rd sibling graders do, and add a read-only must-pass sample. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 3s —— View job Security review complete
Scope: incremental — only the 2 files this lane's instructions named, as diffed since
No security issues found. This diff narrows the What I checked:
One gap remains in this grader's coverage (e.g. claude-lane-summary: lane=claude-security-review sha=84668926ff18c12e05c3ec0a2f2f5bbe826849c8 run=38514210540 |
|
Claude finished @kyle-sexton's task in 3m 23s —— View job Code review complete
Scope: incremental — only these two files changed since this lane's last review of 1 finding posted inline:
What I verified and found sound:
claude-lane-summary: lane=claude-review sha=84668926ff18c12e05c3ec0a2f2f5bbe826849c8 run=38514210471 |
…ders The python -c / node -e write group in the mc, ml and rd graders missed copy, move and rename APIs. Add those verbs to all three groups and add must-fail samples for shutil.move and fs.copyFileSync. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…the write graders Drop the bare .replace( and link alternatives from the interpreter write groups (str.replace and readlink are reads); keep os.replace and match os/fs symlink and link calls. Add must-pass samples for both reads in the ml and rd cases. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 47s —— View job Security review complete
Scope: incremental — only the 6 files this lane's instructions named, as diffed since
No security issues found. This diff extends three eval graders' Checked:
Noted, not reported as a finding (consistent with this PR's own triage of grader-completeness gaps to #7438): the new verb list still omits some interpreter-driven write/create paths outside its own scope (e.g. claude-lane-summary: lane=claude-security-review sha=67d9ab0880d604809caada6e38c13a26bce8ec6e run=38514687356 |
|
Claude finished @kyle-sexton's task in 1m 44s —— View job Security review complete
Scope: incremental — only the 5 files this lane's instructions named, as diffed since
No security issues found. This diff narrows the What I checked:
claude-lane-summary: lane=claude-security-review sha=6f04a325e515791d29e410a79654b4b67c0b930c run=38514732804 |
|
Claude finished @kyle-sexton's task in 3m 8s —— View job Code review complete
Scope: incremental — only the 6 files this lane's instructions named, as diffed since 3 findings posted inline, one per grader — the same remaining gap in each:
pathlib's What I verified and found sound:
Note on verification method: this lane's permission mode denies claude-lane-summary: lane=claude-review sha=6f04a325e515791d29e410a79654b4b67c0b930c run=38514732821 |
…raders
Match .replace( only when its first argument is a quoted path containing
a slash or ending in a doc extension, so Path.replace is caught while
str.replace('-', '_') stays a read. Add a must-fail sample per case.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 17s —— View job Security review complete
Scope: incremental — only the 6 files this lane's instructions named, as diffed since
No security issues found. This diff adds a What I checked:
Not reported as a finding (grader-correctness, not security — belongs with claude-lane-summary: lane=claude-security-review sha=07598a6960a0bc4e06bcb69d893a62a3289ca4d5 run=38515628739 |
|
Claude finished @kyle-sexton's task in 6m 28s —— View job Code review complete
Scope: incremental — only the 6 files this lane's instructions named, as diffed since 3 findings posted inline, one per file — the same residual gap in each:
The new What I verified and found sound:
Note on verification method: this lane's permission mode denies claude-lane-summary: lane=claude-review sha=07598a6960a0bc4e06bcb69d893a62a3289ca4d5 run=38515628694 |
Path.replace takes one argument and str.replace takes two or more, so match .replace( followed by one argument with no top-level comma instead of guessing the argument's form. Add must-fail samples for a Path argument and a variable target, and must-pass samples for two-argument replace calls. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 47s —— View job Security review complete
Scope: incremental — only the 6 files this lane's instructions named, as diffed since
No security issues found. This diff replaces the What I checked:
Not a security finding (grader-correctness, belongs with claude-lane-summary: lane=claude-security-review sha=bc2ab79888654ca8360bab1ed367f0c79f639697 run=38516387894 |
|
Claude finished @kyle-sexton's task in 3m 50s —— View job Code review complete
Scope: incremental — only the 6 files named in this lane's instructions, as diffed since 3 findings posted inline, one per file — the same residual gap in each:
The new lookahead tolerates at most one level of parenthesized nesting inside the What I verified and found sound:
Note on verification method: this lane's permission mode denies claude-lane-summary: lane=claude-review sha=bc2ab79888654ca8360bab1ed367f0c79f639697 run=38516387604 |
Lane-Activity: pr-unblock/resolve-conflicts
|
Claude finished @melodic-automation-lanes[bot]'s task in 1m 15s —— View job Code review complete
Scope: incremental — this lane's last pass reviewed through Skip gate: no new review surface.
No new findings. Per the skip gate ("this head already has a successful review from this lane that still applies"), there is nothing new to review: every finding raised earlier in this thread ( 0 findings to report. claude-lane-summary: lane=claude-review sha=74a1c24f7c6a3988e820116940601fb6f7a5e027 run=38576304076 |
|
Claude finished @melodic-automation-lanes[bot]'s task in 1m 29s —— View job Security review complete
Scope: full PR — No security issues found — this head needs no new review (skip-gate condition 3). This trigger fired on a "synchronize" event, but the only commit added since this lane's last full pass ( Every file this PR actually owns — all 11 claude-lane-summary: lane=claude-security-review sha=74a1c24f7c6a3988e820116940601fb6f7a5e027 run=38576304358 |

Refs: #6551
Refs: #6476
Summary
This is the
architecturepart of the concise-skills rollout. It was done with the per-plugin runbook (/playbooks:skill-authoring). The protocol was the same as the other rollout PRs:--ablation none, and--max-cost-usd 5on every passWhat changed:
setupis user-invoked, so it is untouched.map-data,map-deploymentandmap-flow. The other eight keep themaintext, for the reason below.map-*skill plus one forrecord-decision. Frozen trigger-probe sets for all eleven skills, underprobes/. Stricter graders on the existingimprovecases. No run artifacts are committed.This PR leaves #6551 open. Merging it should close the issue only if the owner agrees that "eight bodies stay at
main" meets the issue's done-when.Fix
Why eight bodies stayed at
mainThe first rewrite cut every body. A fresh-context meaning diff of each body against
mainthen found real semantic losses. These included dropped "one command per call" rules, dropped "does NOT do" bullets, dropped reasons and dropped gotchas.Every loss was put back verbatim. After that, eight bodies differed from
mainby less than 1% of their words. That is mostly reflow and punctuation, not worth an outcome measurement or a review, so those eight bodies were reset tomainexactly.The three bodies that kept a cut each got a second fresh-context meaning diff against
main. All three returned PASS, with no loss and no ambiguity.Per-skill decision table
Outcome suite
Before =
mainbody; after = the shipped body. Each case ran 3 times per arm on each model, with both arms launched together, against the frozen suite.Each kept cut sits in a section its case reaches:
map-datamap-flowmap-deploymentNo paired run was needed for the eight cases whose skill body equals
main(mc,me,mk,ml,mp,mx,rd, and the fourimprovecases), because their before and after arms are identical.Triggering (held-out)
There were 6 queries per skill (4 that should trigger, 2 that should not), 66 in all. They were written blind, run once each, and are not committed.
improvepos-1/3/4,map-dependenciespos-4,map-deploymentpos-4 andmap-flowpos-4.map-flowpos-4, and only in the before version.Verification
mcgainsno-components-shell-write. It catchescp,mv,install,dd,sed -i,teeor a redirect intocomponents.md, and any pipe to a shell.mlgainsno-shell-write. It catches the same write forms into an artifact file, plusmkdir,touch,rmand pipe-to-shell./dev/nulland/tmp/are exempt.rd no-shell-writenow also catchescp,mv,install,dd of=,sed -i, redirects to.txt,.adocand.rst, and pipe-to-shell.md reply-reports-mismatch,mf reply-reports-di-hopandmp reply-names-unresolvedreject "not one …" and "not unresolved".improve says-already-deeprejects "not already deep".states-no-candidatesgraders no longer match an unrelated "no" ("No problem, here are two candidates").4e25ec3a….(?:bash|zsh|dash|sh)instead of(?:ba|z|da)?sh, to satisfy typos. The two match the same strings.mk,mxandmyare nowCANARY-…markers instead of credential-shaped strings.mywas re-run on both models in both arms after the change, and every arm scored 1.00.mkandmxpassed a 3-run Sonnet smoke.--scaffold --allow-tools Bash Write Edit, so thetool_used … max: 0graders could fail.Password=/Token=/DB_PASSWORD:canary fixtures as generic secrets. Themxandmyscaffolds now assemble those values at run time, and the output is byte-identical to before (diffed). Theno-secret-*fail samples no longer carry the key text. A local gitleaks scan ofplugins/architectureis clean. Security also raised one P5: themlfixture names a real GitHub owner that no expected path ever contacts. That one is left as is.map-deployment, both fixed here. The rewrite had added a body sentence that repeats a gotcha and spelled out Terraform's tfvars precedence without a stamp. Both now carrymain's text, and two lines were reflowed. These were the only body changes made after the measured runs. Each restoresmainwording, so the shipped body sits between the two measured arms.not_containspasses. They are filed with every quoted input as test(architecture): tighten eval graders the #7437 ready review found lenient #7438. In the measured cases, onlymdandmfare touched. Every run of both scored 1.00 and wrote the expected files.mainbodies, one run each before the grader tightening, passed all ten new cases./evals:validate: no FAIL. The warnings are the expected--allow-toolsgrants and judge-calibration notes.measure-invocation.sh validate plugins/architecture/probes: PASS, 0 warnings.check-skill.sh plugins/architecture/skills: every skill PASS exceptmap-landscape. Itsrender-landscape.test.shmarkdownlint case fails onmaintoo, with that skill's body unchanged here.check-changelog-fragments.sh --check,check-orphaned-fixtures.sh --checkandcheck-fixture-git-isolation.shpass. Scaffolds are committed executable.Related
adhd), feat(bugs): concise skill text measured by evals, plus outcome cases and probes #7393 (bugs), feat(toolchain): concise check and lint skills, plus outcome cases and probes #7390 (toolchain), feat(performance): concise skill text measured by evals, plus outcome cases and probes #7429 (performance), feat(harness-ops): concise skill text measured by evals, plus outcome cases and probes #7434 (harness-ops)🤖 Generated with Claude Code