Repository navigation
Add STAMPED skills development plan - #24
yarikoptic wants to merge 9 commits into
Conversation
Working plan for stamped-principles/stamped-agent-skills#3: six skills from the issue (assess, align, create, create-repronim, do-full-research-loop, self-assess) plus a shared, non-invocable stamped-conventions skill, developed by running them through subagents on a ladder of concrete use cases (ds007116 rungs R0-R4, a DANDI cross-domain rung) and grading the produced projects against STAMPED checklist 0.3.1 with scripted probes, a fresh-clone rerun, a blind assessor and human review. Also covers the checklist response format (format-3 URL superset, schema gap), assessor calibration via mutants, where eval results live, a phased roadmap, the talk slice for con/talks#33, risks and open questions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
Keep the issue's long skill names for now. Eval results go to con/stamped-skills-evals on the CON Forgejo-aneksajo hub (pushed from typhon as yarikoptic-gitmate, annexed content on the same remote), with produced objects published there so the resolvability and fresh-rerun probes test real URLs; compute runs on typhon. Also align with the issue comment as now read verbatim: the R0/R2 plots put the GM/WM ratio on a secondary axis, the `pointer` baseline is asmacdo's CLAUDE.md snippet verbatim, and the later "(de)compositions" are in phase 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
…v/pip Record what was verified from a cloud session on 2026-10-13: the hub (Forgejo 16.0.5 + git-annex) is reachable once the domains are allowed, the hub admits Anthropic's egress network and a HUB_TOKEN network secret is scoped to it; `push: true` and a dry-run push were accepted. Note that datalad and git-annex install from PyPI (uv tool or pip), tested here, and belong in the environment setup script with pinned versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
…details Ladder: R1 (brain extraction with a ///repronim/containers image on >=10 ds007116 subjects, brain size vs age) becomes the main development target; R0 stays a no-compute warm-up and is the only rung that may use the shipped FreeSurfer tables as its result; MRIQC (motion vs age and time of day, which sessions.tsv keeps at hour resolution) moves to R3 and waits until R0-R2 are done. ReproNim stack: nothing YODA-specific (STAMPED generalizes it), datasets with -c text2git when text can be shared, a BIDS 1.11 study layout from brain-bbqs/study-template (rawbids/, sourcedata/, derivatives/) or a derivative dataset with results at the root, a tracked spec for the project's own tooling, HeuDiConv/ReproIn heuristics, other BIDS converters compared fairly, ReproStim for video. do-full-research-loop is disclaimed as quick and dirty, gets an execute-and-adjust loop that revises the plan on failures, and ends by running assess-alignment-with-stamped-principles. self-assess takes folder pointers (shallow listing), assesses each project and aggregates. Tables restructured for reading, and a "starting on typhon" section added for the session that continues there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
yarikoptic
left a comment
There was a problem hiding this comment.
Review of the draft plan by two independent reviewers (eval/reproducibility, and skill authoring/repo conventions), who agreed on the list below after one round of corrections. Line numbers refer to docs/stamped/PLAN.md at ea48c88. No CI checks have run on this PR.
Overlap with open work
- #23 is not mentioned. It already adds
assess-stamped/align-stamped, while §4 createsassess-alignment-with-stamped-principles/align-with-stamped-principlesfrom scratch, and L4 settles the names differently from #23's reviewers. Suggest: working names follow #23, the long issue names stay as trigger phrases indescription, and Phase 1 builds on #23 (rebased ontostamped-conventions) instead of forking. Please also add #23 to the "con/skills itself" list (L190-199). (We could only see #23's file list, not its contents.) - Reuse #16's
code-quality-report-conventionsfor report location, provenance stamp and evidence rules, sostamped-conventionsadds only the STAMPED-specific parts (checklist pin, verdict mapping). Skipresponse-format.md/verdicts.mdunless #23 already defines them. - Avoid new tooling where something exists.
ci/validate_skills.pyalready has W003 (>600 lines) andanalyze-duplicatescovers clones, so a new size/duplicate lint looks unnecessary. Theharness/{run,grade,aggregate}.pyat L312 contradicts L203-204 (reuse skill-creator); drop it or say why skill-creator is insufficient. - Validator fit. The validator only globs
*.pydirectly in a skill directory (ci/validate_skills.py:228), soscripts/**is not checked. E003 would flag/home/<user>/literals in SKILL.md, so keep theno-abs-pathspattern table inreferences/. L159 saysmetadata.version, while L194/L254 use top-levelversion:(as #16): please use top-level.
Eval design
5. R0 oracle (L554) is "a deterministic rerun gives identical outputs", which a wrong column also passes. Suggest *Oracle:* values match a reference table computed by hand and committed under oracle/; determinism is checked separately by fresh-rerun. Please also confirm that *_desc-FreeSurfer_qc.tsv actually holds the GM/WM volumes R0 asks for (L550-551), and add the oracle-not-copied probe that L883 claims exists but §6.5 lacks.
6. Arms and grader. pointer vs skill (L605-609) differ by more than the skill, so define skill as pointer + skills (or add a skills-only arm). Inner-loop runs share the host filesystem with the plan and oracles (L621-623): state that they are for debugging only and never for reported numbers or the pointer/skill comparison. T2 (L672-675) is the skill under test; have it see a stripped copy (no transcript, AGENTS.md or skill stamps), use a different model family from the runner, and never gate a release alone. Also say how hold-out tasks stay clean of the inner loop.
7. Probes and oracle. large-in-annex has no threshold and no-abs-paths would flag legitimate datalad run records, so consider about six probes for v0.1 and compare plots through their TSV, never pixels. "Brain size" is undefined (L565); for example Spearman >= 0.8 between mask volume and FreeSurfer BrainSegVol over the same sessions (threshold set from a pilot). Subject/session selection needs a deterministic rule so repeats are comparable.
Scope and safety
8. Scope. The summary promises "conventions + assess v0.1", but Phase 1 (L805-813) adds an evals skeleton, hub bootstrap, mutants, a lint and upstream PRs. Suggest Phase 1 = stamped-conventions v0.1 + #23's assess on the pin, with mutants as 1b. Consider moving §2 detail, §6.8, §7.1, §8 and the repronim stack detail (L384-404) to follow-up issues. Add a per-iteration budget cap (sessions, USD, wall time) to §6.9, since a full benchmark is roughly hundreds of sessions, and mark R3-R5 out of scope for v0.1. State in §10 that with 3 repeats the "≥ 2 of 3" and 90%/80% criteria (L784-790) are descriptive, not significance tests, and whether they are placeholders.
9. Publishing (L752-766). Please state the token's scope and whether the hub repo is private (an Apache egress allow-list is not authentication). We suggest agent-generated repos (transcripts, absolute paths) land in a private namespace and are promoted to public by a human after a secret/path scan. L762 "verified" is only a dry-run push.
Consistency
10. Assess is "read-only" (L42, L342) but writes into the target (L338), and fresh-rerun (L663) clones and reruns; suggest "writes only its report; fresh-rerun is opt-in, in a scratch clone". L355's introduce-reuse-compliance is renamed setup-* in #21. Open question 2 (L903) is already treated as decided in §5. These probes belong to the assess skill, so points 7 and 10 interact. Optional: note that any phase PR follows the repo's PR conventions.
This is from reading the plan and the repo checkout; I did not run anything, and could not read #16's or #23's file contents.
Generated by Claude Code
Per the review on #24: - Names and phase 1 follow #23 (assess-stamped, align-stamped); the issue's long names become trigger phrases. Phase 1 is stamped-conventions (pin + answer mapping only) plus #23's assess on the pin; probes, mutants and calibration are 1b. - Report location, provenance stamp and evidence rules come from #16's code-quality-report-conventions; no new lint (W003, analyze-duplicates); the only new runner is run_outer.py, since skill-creator runs in-session. - Helper scripts sit at the top of skill dirs (what the validator checks); abs-path patterns live in references/; top-level version:. - Evals: R0 oracle is a hand-computed reference table (FreeSurfer QC columns checked); oracle-not-copied added; brain size is mask volume vs BrainSegVol (Spearman, threshold from a pilot); deterministic subject selection; `skill` = `pointer` + skills; inner loop is debugging only; blind assessor on a stripped copy, other model family, never gates alone; hold-out tasks kept out of this repo; six v0.1 probes; TSVs, not pixels. - Scope: v0.1 = R0-R2, budget caps per iteration, criteria marked as descriptive placeholders; prior work, ReproNim stack, infrastructure and talks moved to companion docs under docs/stamped/. - Publishing: private first, scan, human promotion; token scope and repo visibility stated as known; "verified" is a dry-run push. - Consistency: assess writes only its report and never reruns; setup-reuse-compliance after #21; answer vocabulary stays an open question; phase PRs follow AGENTS.md PR conventions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
|
Thanks for the review. All ten points are addressed in f25257e. I read #23's and #16's contents, which the review could not see; what follows takes them into account.
Generated by Claude Code |
yarikoptic
left a comment
There was a problem hiding this comment.
Re-review of f25257e (delta since ea48c88), by two independent reviewers (reproducibility/eval design, and skill authoring/repo conventions). They also looked for bloat and for places where existing repo functionality should be reused. Both agree the ten earlier points are mostly resolved: names follow #23, #16 is reused, scope is R0–R2, the R0 oracle and oracle-not-copied are fixed, and hold-outs are kept out of the repo. The remaining points below are where the two reviewers' findings overlapped or did not conflict. No CI has run on this PR. I did not run anything.
Eval design (worth fixing before phase 1b)
- Grader independence (PLAN.md ~L293, 478, 529, 594).
probes.pyships inassess-stamped, which theskillarm installs, anddo-full-research-loopstep 8 runsassess-stampedon its own output and fixes the MUSTnos. Theskillarm therefore optimises against the probes that then grade it. Suggest grading with a frozen, version-pinned copy of the probes plus a few probes kept out of the skill, and reporting "self-assessed" and "externally graded" separately. - Oracle leakage (~L429-466). "Installs the skills at a pinned commit" is ambiguous: a clone of con/skills would expose
evals/stamped/use-cases/*/oracle/,rubric.yamland the plan to the agent. Say that only the skill directories are installed, and that oracles and rubrics are mounted into the grader only. - Budget arithmetic (~L504, 566, 582). The 40-session cap counts the 28 runner sessions only. It omits one T2 assessor session per run, the
skill, explicitandskill@vN-1arms that §6.7 step 7 requires, and pilot runs. Restate the cap as "runner + assessor sessions" and list the exact v0.1 arm set. fresh-rerunvs promotion (~L496-501; infrastructure.md:25-29). It is defined on the published object, but promotion to public is a human step, so it cannot run per run. Run it from the private namespace with a read token, and blockdatalad pushof runs to the public repo until the private org exists (open question 13). Referencing the private hold-out from the public.gitmodulesleaks that it exists.- R1 oracle (~L413). Spearman ≥ 0.8 at n = 10 is weak and passes a wrong-unit result (e.g. voxel counts). Add a magnitude check (mask volume /
brainseg_brainsegvolwithin a pilot-derived band, in mm³) and fix the pilot protocol in the use case. - Statistics and provenance (~L448, 471, 594). "Clearly better" and "≥ 2 of 3" are undefined at n = 3. Say per-use-case paired pass counts, with raw tallies and no pooled significance claim. The run record should also hold the Claude CLI version, container image digest and dataset commit.
Repo conventions (please check against master)
7. PR rule misapplied (PLAN.md:40, :603; prior-work.md:115). The AGENTS.md PR rule binds skills that prepare PRs for other projects. con/skills has no PR template or CONTRIBUTING, so "phase PRs follow the repository's PR conventions" has no content. State that, and list the real obligations: ci/validate_skills.py (via tox), a README table row per skill, and #16's "Skill versions" rule.
8. version: is not yet a con/skills convention (PLAN.md:102, :145). Nothing on master has top-level version:; it comes only from open #16 (while #23 uses metadata:). Mark it "from #16, not yet merged" and add that to §9 as a phase 1 dependency, together with code-quality-report-conventions and #23 (both unmerged). The "changelog line per bump" has no repo rule behind it; drop it or say where it lives.
9. README rows. Every phase adds skills (including non-invocable stamped-conventions) and none mentions the README table row. #16 is the precedent for non-invocable skills.
10. Validator and #13 (PLAN.md:176, :647). find_skill_dirs globs */SKILL.md and the workflow path filters are */SKILL.md and */**.py, so a later move under skills/ (#13) silently stops validating; add "update the validator and workflow paths" to that move. run_outer.py and mutants/*.py are outside the checked paths. W003 counts only SKILL.md, so reword the bloat mitigation to "W003 on SKILL.md only".
Reuse and size
11. run_outer.py as "the only new code" (~L458, 292). Please re-check whether skill-creator's scripts/run_eval.py / run_loop.py already shell out to claude -p; if so, wrap them and add only the container and datalad layer. The long names kept as trigger phrases also have no trigger test: skill-creator's description-optimisation loop would cover it.
12. Bloat. About 1,000 lines overlap across the five docs: PLAN §2 vs prior-work.md; prior-work.md:113-143 vs PLAN §1/§3/§4.2/§5; the "Decided so far" header vs §10 (with struck-through history); the "Revised 2026-10-13" notes; infrastructure.md "Starting on typhon" vs PLAN §7. Suggest PLAN.md keeps naming, scope, phases, layering and open questions, §6 moves to an evals doc, and prior-work.md holds sources only.
13. Public operational detail (infrastructure.md:26-41). The pushing account, HUB_TOKEN secret and its missing scope, and the egress allow-list are in a public repo. A one-line "results hub: con/stamped-skills-evals, private-first" suffices; keep the rest in a private note.
Optional
- The reviewers differ on
stamped-conventions: one finds thelock.json+ answer-mapping layering fine, the other would keep the pin insideassess-stampeduntil a third consumer exists, since #23 already pins by tagged URL and a new skill forces a rebase of #23. Your call; if kept, defer the sha256 and converter until the converter exists. - Verb consistency after #21:
create-stamped-project,create-repronim-stamped-projectanddo-full-research-loopbreak thesetup-/assess-/align-/analyze-/review-pattern;setup-*names are free to adopt before any skill exists, with the issue's names as trigger phrases. - Timeline:
talks.mdoffersassess-stampedon t261 and an "R0 in 3 conditions" stretch before calibration (§6.6) andrun_outer.py(phase 2) exist; label these "uncalibrated demo, hand-run" or drop the stretch.
Confirmed fine: the validator claims (*.py only directly in the skill directory, W003 > 600 lines, E003 scanning only SKILL.md so references/abs-path-patterns.md works), the #16/#21/#23 cross-references, phase scoping consistency, and the assess-writes-outside-target decision.
Generated by Claude Code
Per the second review on #24: - Grading independence: graders use a frozen copy of the probes pinned at the harness commit plus hidden probes; self-assessed and externally graded results are reported separately. - Leakage: only skill directories enter the sandbox; oracles, rubrics and grading probes are mounted into the grader only and kept private; the hold-out dataset is not referenced from public .gitmodules. - Budget counts runner + assessor + pilot sessions, with the exact v0.1 arm set (pointer, skill, skill@vN-1 x R0-R1 x 1 tier x 3 = 18 + 18 + 4). - fresh-rerun clones from the private namespace; no public pushes until it exists. - R1 oracle adds a magnitude band (mask volume / BrainSegVol) and a frozen pilot protocol; results are per-use-case paired tallies; runs record CLI version, image digest and dataset commit. - Repo conventions: the AGENTS.md PR rule does not apply here; real obligations are tox -e validate, README rows and #16's version rule (unmerged, like #23, both listed as dependencies); validator/workflow paths noted for the #13 move and for evals/; W003 is SKILL.md only. - Trigger tests reuse skill-creator's run_eval.py/run_loop.py; the new runner only adds the container and datalad layer. - No separate stamped-conventions skill for now: the pin stays in assess-stamped, as in #23. - Docs: §6 moved to evals.md, prior-work.md is sources only, infrastructure.md removed (operational details kept out of the public repo), decision history condensed, talks demo labelled uncalibrated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
|
The re-review (5503593745) is addressed in 4a18324. The five docs total 714 lines, down from 1,042.
Optional points:
Generated by Claude Code |
|
One philosophical difference I think we should discuss: what are these skills for?
#23 tries to serve both: level 1 is the comparable one-shot, and level 2 is hands-on. The open question is which one is the default and the design center. Generated by Claude Code |
|
Thanks, this builds on #23 nicely. On the points addressed to me:
Generated by Claude Code |
yarikoptic
left a comment
There was a problem hiding this comment.
Re-review of 4a18324 (delta since f25257e; net about -330 lines). No CI runs on this docs-only PR. Two independent reviewers (eval design, and repo conventions/packaging) found all 13 earlier points addressed; nothing is blocking. Confirmed: independent grading with a frozen probes.py and hidden probes, skill-directories-only install with oracles mounted into the grader only, the PR-rule correction (real obligations: tox -e validate, README row, #16's version rule), version: marked as pending #16, #16/#23 listed as phase-1 dependencies, validator/#13 path note, infrastructure.md removed, prior-work.md reduced to sources.
Should fix
- R2 vs the budget (evals.md §3 vs §10). v0.1 covers R0–R2 but the 40-session arithmetic counts only R0 and R1, and R2's CPU-hour pilot is not in it. Add R2 to the arithmetic or mark it "not in the per-iteration budget".
- Cap headroom (§10). 18 + 18 + 4 = 40 exactly, so one harness-fault rerun breaks the cap, and 18 sessions go to an assessor the plan calls advisory. Suggest counting reruns in the cap, and running assessors on a sample of about 3 objects per iteration until the §7 gold-set calibration passes.
- Statistics wording (§10). "Paired" is a misnomer (repeats are not paired across arms). At 3 repeats even 3/3 vs 0/3 is only p ≈ 0.1 two-sided (Fisher), so the "no regression" and "never below pointer" v1.0 gates cannot be judged. Suggest "side-by-side pass counts (k of 3 per arm), raw counts, no significance claims", and either raising repeats (about 10 per arm on the main use case) before v1.0 or labelling the gates smoke thresholds.
oracle-not-copied(§6). "No run record readsderivatives/freesurfer-post/" fails a legitimate sanity check. Suggest: no output reproduces the shipped values (or a constant multiple), and no output depends via run records on that directory as an input; read-only inspection is logged as a process metric.fresh-reruntoken (§6).datalad rerunexecutes agent-authored code, so a read token in the rerun container's environment or.git/configis exposed to it, along with the private namespace (oracles, hold-outs). Suggest a token scoped to the runs namespace, kept outside the container, clone mounted read-only, and egress limited to data and container hosts.- Sandbox can still fetch grader material (§5). con/skills is public on github.com, which also hosts the datasets, so a domain allow-list cannot block it. State that public grader material is assumed readable (only oracle values and hidden probes carry secrecy), and add "fetches of con/skills or the evals repo" to the process metrics, flagging such runs as contaminated.
- R1 band (§3). A band calibrated on one tool (SynthStrip, ±10%) would fail a legitimate container with a different mask definition. Suggest the union of ratio ranges from two containers, widened by 10%, and say that the frozen values live in the private oracle (only the protocol is public).
- Session-handoff content in a durable doc. evals.md §11 ("Starting on typhon") hard-codes the branch
claude/ecstatic-cerf-nh4j6wand host checks, and is linked from L100 and PLAN.md L234. Move it to the PR description or a phase-2 issue and repoint the links to §5. The docs also address one reviewer directly ("your review", "yours to set", "you sign off", "my recommendation"); use "the maintainers" / "recommendation". - History. Commits
90f4153ande9839d3still name theHUB_TOKENnetwork secret, the egress admission and the pushing account, even though the files are clean. Squash-merge so none of it reaches master, and consider rewording or squashing the branch before it leaves draft.
Optional
- Remaining bloat: PLAN §5 restates evals §4–6 and §10; PLAN §7 repeats dependency, publishing and cap text;
prior-work.md"Hence:" lines repeat PLAN §2; the-n repronim-mriqcslide note belongs in con/talks#33. - Say in evals §2 that run results and reviews reuse the stamped-skills-assessment record types and skill-creator's
grading.json(no new schema). - Hidden probes need private mutants; define "declared output" for
derived-have-records(every tracked file underresults/orderivatives/is an output of adatalad runrecord);large-in-annexexempts text, so add an upper cap (e.g. 5 MiB). - Names: a one-line note that
create-stamped-project,create-repronim-stamped-project,do-full-research-loopandself-assess-stampeddeliberately keep the issue's wording until thesetup-*family from #21 settles. typhonappears throughout public text; "the lab compute host" would do.
I did not run anything; this is from the diff and the five docs at head.
Generated by Claude Code
From @asmacdo on #24: #23 lands first on its own and a shared conventions skill waits for a second consumer of the pin; no vendored checklist JSON; probes live under evals/, never in a skill (they assume a stack, and would grade the arm that installed them); #23's level 1 (inspection) is what the evals use, level 2 is user-approved execution; skills omit allowed-tools (#25). The hands-on vs packaged question is recorded as open question 1 with a recommendation. From the third review: R2 gets its own iterations outside the per-iteration budget; the cap counts reruns and the blind assessor runs on a sample until calibration passes (18 + ~3 + 4 = 25 of 40); results are side-by-side pass counts with no significance claims, per-iteration gates are smoke thresholds and v1.0 uses ~10 repeats on R1; oracle-not-copied judges outputs and run-record inputs, logging read-only inspection; fresh-rerun keeps the token outside the container, mounts the clone read-only and limits egress; public grader material is assumed readable and fetches of con/skills mark a run contaminated; R1/R2 bands come from two containers, with values in the private oracle; declared outputs and a 5 MiB cap for text are defined; records reuse stamped-skills-assessment and grading.json. The session handoff leaves the docs, direct address and the host name are gone, PLAN §5 is one line, and the slide note moves to con/talks#33. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
|
3f5a560 addresses the third review (5508263110) and @asmacdo's two comments.
Third review
Optional points: all taken.
Generated by Claude Code |
yarikoptic
left a comment
There was a problem hiding this comment.
Re-review of 3f5a560 (delta since 4a18324). No CI runs on this docs-only PR. Two independent reviewers (eval design and reproducibility, and skill authoring and repo conventions) found nothing blocking and their lists did not conflict. Verified: the 18 + ~3 + ≤4 = 25 of 40 arithmetic, the Fisher figure (3/3 vs 0/3 gives p = 0.1), the R1 band definition, and the evals.md §5/§6/§7/§10 cross-references. The session-handoff text is gone, and probes now live under evals/ as agreed. I did not run anything.
Should fix
- #16 is merged (
5ae48e9on master, withcode-quality-report-conventionsatversion: 0.1.0and the "Skill versions" rule inAGENTS.md). PLAN header, §6 ("#23 and #16, both unmerged"), §7 ("Unmerged dependencies") andprior-work.mdstill treat it as open. Rebase on master, drop "once #16 is merged", and say new skills declareversion: 0.1.0while their PR is open. - W002 is expected.
ci/validate_skills.pywarns on a missingallowed-toolsand still exits 0. Say in PLAN §2.4 and §6 that the warning is expected and tied to #25, so it is not read as a miss. - Pilot sessions (
evals.md§3 vs §10). §3 freezes the pilots before any reported run, but §10 charges "≤4 pilots" to every iteration. Make them a one-off outside the per-iteration cap, or charge them to the first iteration, and say whether the 4 are 2 containers × 2 rungs. - "Reruns" in §10 means re-running agent sessions after harness faults, which
fresh-rerunin §6 is not (it is a grader-sidedatalad rerun). Reword to "repeat runs after harness faults or contamination". - Contaminated runs (§5) have no stated fate. Suggest they are excluded from the k-of-3 count and rerun from the spare sessions.
- R1 ordering threshold (§3). "At least the pilot threshold" for Spearman is undefined. Give one rule, for example the lower of the two pilot values minus a margin.
- v1.0 gate scope (§10). The ~10-repeat benchmark is "on R1", but the criterion says "every v0.1 use case". Narrow one of them.
fresh-rerunmounts the clone read-only (§6), butdatalad rerunmust write. Say "read-only source clone, rerun in a throwaway copy". The "egress limited to data and container hosts" claim should also admit that GitHub hosts the datasets.- Operational detail in public docs.
evals.md§9 says it is kept out, yet PLAN §8 ("token scopes"),evals.md§5 ("lab's compute host") and §6 (token and network layout infresh-rerun) still carry some. Trim to "runs in a fresh container on a controlled host". - Wording in
evals.md§5: "They share a filesystem with this plan" reads as leftover handoff text. Use "with the grader material". - Validator extension (Phase 2). The validator walks only
*/SKILL.mdandskill_dir/*.py, so extending it toevals/means special-casing a non-skill directory. Present it as a choice, with ruff in its own tox env or only a workflow path-filter entry as the simpler option.
Optional
oracle-not-copiedcatches only exact copies and constant multiples. Say the run-record dependency clause is the primary check.- The v1.0 gate "pass count ≥ pointer's" can pass on noise at ~10 repeats; consider a stated margin, still as raw counts.
- Say how an unattended
claude -prun givesdo-full-research-loopits "one approval" (a pre-approving prompt or a permissions flag), or it may stall. - Phase 1b needs a hand-built known-good R0 object before the Phase 2 runner exists, and should state that it creates
evals/stamped/. - "Probes live under evals/, never in a skill" and "omit
allowed-tools" are each stated in 3–5 places. Keep one statement and make §8 "Decided" links. Runanalyze-duplicatesover the five docs.
Generated by Claude Code
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
- #16 is merged (master merged in, not rebased, so review-cited hashes stay valid): the header, roadmap, risks and sources no longer call it open; new skills stay at version 0.1.0 while their PR is open; W002 for the omitted allowed-tools is stated as expected. - Pilots are a one-off outside the per-iteration cap (hand-run compute, 2 containers x R1/R2); the R1 ordering threshold is the lower pilot Spearman minus 0.1; the cap counts repeat runs after harness faults or contamination (18 + ~3 = 21 of 40); contaminated runs are excluded and repeated. - The v1.0 gate is scoped to R1 with a stated margin (placeholder); R0 and R2 stay at smoke level. - fresh-rerun runs in a throwaway copy of a read-only source clone, in a container without credentials, and admits that GitHub stays reachable; host and token detail trimmed from the public docs. - oracle-not-copied makes the run-record clause primary; unattended runs get their one approval from the eval prompt; Phase 1b creates evals/stamped/ with a hand-built R0 object; Python checks for evals/ are a choice (path filter or ruff), leaving validate_skills.py skill-only; repeated statements reduced to one each (jscpd: 0 clones). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb
|
f351632 addresses the fourth review (5509631912).
Optional:
Generated by Claude Code |
Summary
A development plan for a collection of STAMPED skills, from stamped-principles/stamped-agent-skills#3. It builds on #23 (
assess-stamped,align-stamped, still open), which lands first on its own, and on #16 (merged): its report conventions and the "Skill versions" rule.The skills are developed against concrete use cases. Agents run them on a ladder of ds007116 tasks in fresh containers, and the resulting projects are graded outside the sandbox, by scripted probes, private reference tables and fresh-clone reruns.
Docs only; there are no skills or code yet.
Files
docs/stamped/PLAN.md: the skills and their names, design principles, layering and layout, answer format, roadmap with per-PR obligations, risks, and decisions and open questions.docs/stamped/evals.md: use cases R0–R2 (with R1, brain extraction on 10 named subjects, as the main target), pilots, arms, runners and sandbox rules, grading (external vs self-assessed), calibration, iteration protocol, publishing, budget and done criteria.docs/stamped/prior-work.md: sources.docs/stamped/stack-repronim.md: draft ReproNim stack reference.docs/stamped/talks.md: how this feeds the MIT and US-RSE talks (WiP: 2026 USRSE CON and MIT ReproNIM STAMPED talks talks#33).Status
Draft for discussion. Four review rounds and @asmacdo's notes are addressed (f25257e, 4a18324, 3f5a560, f351632), and
masterwas merged in after #16 landed; open decisions are in PLAN §8. The plan is to squash before this leaves draft, or to squash-merge. con/skills has no PR template or contributing guide. The validator workflow does not run on docs-only changes;ci/validate_skills.pypasses locally (0 errors).Handoff: starting phase 1b/2 on a controlled host
For a Claude Code session continuing there:
claude/ecstatic-cerf-nh4j6w, or branch off it.uv.evals/stamped/:datalad(a release with the gh-7899 fix);datalad-container;git-annex(the PyPI wheel works);con-duct.datalad create -c text2git), add con/skills as a subdataset, and add the hub siblings, private first.🤖 Generated with Claude Code
https://claude.ai/code/session_018TvTLThBRhJrk8ZZtGVFNb