polarizetech/scientific-research-scaffold
v0.8.0MIT AND CC-BY-4.0
Create and adopt reproducible scientific study, simulator, and research-tool repositories.
Changelog
v0.8.0 (2026-10-02)
- The workbench kind.
WORKBENCH.toml: one repo holding generaltools/,sims/andapps/and one folder per study.scaffold new workbenchcreates one;new study --inside <workbench>creates a study that shares the repo's kit, agents, CI and licence;new tool|sim --inside <study or workbench>adds units to either. A workbench has no one stage or corpus project, may mount the corpus as a submodule, and declares itsprivatefolders, which requires a private repo.checkon a workbench checks every study it lists. - A study may hold its own tools (
[[tools]]with apath); a tool inside a study is a unit, not a tool repo. - A study inside a workbench carries no
visibilityof its own: the workbench decides it. - Adopted units. A
[[datasets]]or[[calculators]]entry withadopted = truepredates the unit formats:checkrequires only that it exists, and warns that it owes its manifest when next worked on. - Generated CI checks out
v0.8.0.
v0.7.0 (2026-10-01)
- Pins scientific-research-agents v0.2.0, with provider-neutral role bodies and Claude Code subagent frontmatter retained as an adapter.
- Makes
AGENTS.mdthe shared instruction surface for Claude, ChatGPT, Codex and other repository-aware assistants. Per-kind scientific rules now live in its scaffold-managed block; newCLAUDE.mdfiles import it without duplication, while existing Claude customizations remain untouched. - Packages
new-studyas a portable ChatGPT/Codex skills-only plugin and documents Claude and Codex skill installation separately. - Generated CI checks out
v0.7.0.
v0.6.0 (2026-10-01)
- Needs adaptive-preregistration v0.7.0 or later. Generated CI checks out
v0.6.0. - New tools start at
0.1.0, in preparation (an undated changelog heading), sorelease-checkandcheckagree. - Tools use kit v0.7.0.
new toolinstallstool-versioning(releases: annotated tags, outputs changed, consumers,release-check) in place of the profile's preregistration modules;prereg, a kit default, now scopes the tool claim first (tool-scopewas merged into it). A tool's override experiments are preregistered in the research corpus.checkwarns while a tool with the scope protocol has noSCOPE.toml.
v0.5.1 (2026-09-30)
- Adopted repos stay adopted.
.scaffold.lockrecords"adopted": truefor a repo that took up the scaffold rather than being made by it, andupdatenever adds a missing file to such a repo unasked. Before, a lock written by an adoptingupdatemade the nextupdatetreat the repo as scaffold-made and add its CI andMakefile.
v0.5.0 (2026-09-30)
- Needs adaptive-preregistration v0.5.0 or later, whose
tool-scopeapplies to tool repositories. - Generated CI checks out
v0.5.0. - Tools are scoped.
new toolinstalls the profile's[prereg] tool_modules(tool-scope) in place of its preregistration modules, so a tool's claim, features and every scientific feature's evidence and decision are settled with the person first (SCOPE.tomlat the root; kittool-scopenow applies to tool repositories).checkwarns while a scoped tool has noSCOPE.toml.
v0.4.0 (2026-09-30)
- Generated CI checks out
v0.4.0;updatemoves existing repos' CI to it, andUPGRADING.mdsays what else to do. - Repos notice new releases.
UPGRADING.mdsays, per release, whatscaffold updatedoes and what a session does by hand.scaffold versioncompares a repo's recorded release with the current one (and with GitHub's latest) and prints the steps in between; a session hook in.claude/settings.jsonruns it when a Claude Code session starts, beside the kit's hooks, and theAGENTS.mdsection tells Codex to.updateadds the hook, and prints the upgrade notes with its plan. - Work types replace
experiments/. A study is built from apps, sims, datasets, calculators and tools (PROTOCOL.md § 5), each with its own folder, entry requirement and way of writing back to research.scaffold new datasetcreatesdatasets/<slug>/(a dataset-fetch reference pinned to a version, selection criteria,analysis/);scaffold new calculatorcreatescalculators/<slug>/(CALCULATOR.md,reference.csv). Preregistrations live in the unit they test,<unit>/preregistrations/<EID>/, listed inEXPERIMENTS.md; sims usepreregistrations/too.checkenforces a selected dataset's pinned reference and licence, and calculator reference values from PROBE on;experiments/,data/manifest.jsonand unregistered unit folders are warnings. PROTOCOL.md sections from Apps on are renumbered. - The agents moved to their own repo, scientific-research-agents,
included as a submodule at
agents/pinned tov0.1.1: the briefs, the coordination protocol, discipline briefs, prices and the usage tool.scaffold usagepasses through to itsbin/agents usage. Thenew-studyskill moved toskills/. Clone with--recurse-submodules. - Agent coordination.
agents/COORDINATION.md: one lead delegates, agents pass 150-word handoffs instead of transcripts, parallel work only for independent tasks (at most three, each in its own worktree), agent teams only for tight back-and-forth, and the science gate never skipped. - Mathematician agent. Equations, constants, units and valid ranges; records each piece of maths with its source (BioNumbers style) and specifies calculators with reference values, handing code to the engineer.
- Model routing. Each agent's frontmatter now sets its starting
modelandeffort(a newscouton Haiku; the others on Sonnet), overridable in a profile's[agents.routing]; the lead escalates a task on a clear signal. - Codex. A marked scaffold section in
AGENTS.mdgives every assistant the roles, the coordination rules and Codex routing from the profile's[agents.codex].updatemaintains it and leaves the rest of the file alone. scaffold usage. Tokens and API-equivalent cost per repo and model from Claude Code's and Codex's local logs, a monthly projection, and Codex's plan rate-limit windows. Prices are inagents/prices.toml. Each response is counted once: Claude Code writes one response as several transcript lines.
v0.3.0 (2026-09-30)
- The tool kind. A third kind of repo, for one job done for other repos with no research in it:
TOOL.tomlwith ajobin place of a question, aversion, and[[consumers]]naming what each dependent repouses.scaffold new tool <name> --job "..."creates one.checkfails a tool that holds research (a question,[corpus],RESEARCH.md,EXPERIMENTS.md,experiments/), whose version differs acrossTOOL.toml,pyproject.toml,CITATION.cffandCHANGELOG.md, or whose consumers don't say what they use. Modelled on theTOOL.tomlan existing tool repo already used; PROTOCOL.md § 7. scaffold statusandscaffold update.statusgives one line per repo: kind, stage, scaffold release, CI ref, check result and pending update.updatebrings a repo's scaffold-owned files (the CI workflow,Makefile,shared/workbench.py) up to this release. It replaces only files nobody edited, known from the new.scaffold.lockthatnewwrites, or by matching what an earlier release wrote. In an edited workflow it moves only the scaffoldref:; other edited files are kept unless--adopted. A dry run unless--apply; refuses to overwrite uncommitted work; never commits. PROTOCOL.md § 12.- Specialist agents. Every new repo gets Claude Code subagents in
.claude/agents/:computational-engineer,designer,frontend-developer,researcher,analystandscience-writer(a sim has no UI agents), plus.claude/disciplines.md. A profile's new[agents]table chooses the discipline briefs (agents/disciplines/) and the code conventions written into the agents. The agents are scaffold-owned, soupdatekeeps them current;--adoptnow takes a folder, to add them to an existing repo. GeneratedCLAUDE.mdsays which agent takes which task, and in what order. - Studies and sims list the tools they use under
[[tools]], andcheckfails a tool pinned to a branch. - PROTOCOL.md sections from Preregistration on are renumbered by one (Preregistration is now § 8).
- The built-in TOML parser (Python < 3.11) reads arrays that span lines, and decodes non-ASCII strings
correctly; before,
"µV"came back garbled. - Generated CI checks out
v0.3.0, andupdatemoves existing repos' CI to it.
v0.2.0 (2026-09-29)
- No default profile.
scaffold newtakes--profile NAMEor$SCAFFOLD_PROFILE, and fails with the list of profiles if neither is set. Before, it silently usedpolarizetech. - Visibility is never defaulted. New manifests say
visibility = "undecided"unless--visibility public|privateis given, andscaffold checkfails onundecided. Before, the template wrote"private"with today's date, which passedcheckwithout anyone deciding. - Generated study and sim CI checks out
v0.2.0.
v0.1.0 (2026-09-27)
First release.
- The study protocol, the adoption guide, study/sim/app templates, and
scaffold(new,promote-sim,check,profiles), with theexampleandpolarizetechprofiles. - Generated study and sim CI checks out this release (
v0.1.0) rather thanmain.