pen-stack 5.12.0__tar.gz → 5.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pen_stack-5.12.0 → pen_stack-5.13.0}/CHANGELOG.md +30 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/CITATION.cff +1 -1
- {pen_stack-5.12.0 → pen_stack-5.13.0}/PKG-INFO +24 -5
- {pen_stack-5.12.0 → pen_stack-5.13.0}/README.md +23 -4
- pen_stack-5.13.0/benchmarks/genome_writing_challenge/README.md +49 -0
- pen_stack-5.13.0/benchmarks/genome_writing_challenge/SUBMISSIONS.md +16 -0
- pen_stack-5.13.0/docs/challenge.md +33 -0
- pen_stack-5.13.0/docs/co_scientist_loop.md +31 -0
- pen_stack-5.13.0/docs/integrations.md +56 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/__init__.py +1 -1
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/co_scientist.py +36 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/PKG-INFO +24 -5
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/SOURCES.txt +9 -0
- pen_stack-5.13.0/prereg/SHA256_LOCK_ws_challenge.json +8 -0
- pen_stack-5.13.0/prereg/SHA256_LOCK_ws_cosci2.json +8 -0
- pen_stack-5.13.0/prereg/ws_challenge.yaml +20 -0
- pen_stack-5.13.0/prereg/ws_cosci2.yaml +20 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pyproject.toml +1 -1
- {pen_stack-5.12.0 → pen_stack-5.13.0}/LICENSE +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/MANIFEST.in +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/bench/run.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/benchmarks/genome_writing_bench/README.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/antipeg.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/atlas_families.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/bridge_offtarget_profile.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/capsid_epitope_oracle.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/capsid_sequences.fasta +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/cargo_polish.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/cell_types.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/datasets.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/delivery_constraints.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/delivery_rules.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/delivery_vehicles.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/gates_v3.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/genotoxicity_oracle.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/gsh_validated_heldout.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/intent_weights.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/known_unknowns.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/llm.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/monitor_queries.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/oracles/scope_cards.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/rules/delivery.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/rules/fold.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/rules/multiplex.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/rules/payload.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/rules/reachability.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/safety/hazard_registry.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/safety/policy.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/safety/probes.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/score_axes.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/seroprevalence.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/target_sites.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/universe_crosswalk.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/write_types.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/configs/wtkb_curated.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/data/curated/bridge_offtarget_energetics.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/data/curated/gene_coords.parquet +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/data/curated/unified_editor_universe.parquet +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/BACKLOG.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/DEPLOY.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/INFRA.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/MCP.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/RELEASING.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/REPRO.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/agent.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/alphagenome_feasibility.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/autonomy.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/benchmark_circularity.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/biosecurity.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/build_interface.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/cards/atlas.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/cards/durability.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/cards/safety.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/closed_loop.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/co_scientist.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/delivery.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/delivery_immunology.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/digital_twin.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/dissemination.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/environment.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/experiment_design.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/generative_design.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/index.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/mechanistic_constraints.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/oracles.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/positioning.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/private_data_formats.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/quickstart.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/responsible_use.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/rules.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/scope.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/scorecard.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/tutorials/compare-families.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/tutorials/score-deliverability.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/tutorials/where-can-i-write.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/tutorials/which-writer-reaches-locus.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/uncertainty.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/verify.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/world_model.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/writer_verification.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/docs/wtkb.md +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/_resources.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/active/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/active/acquire.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/active/design.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/active/validate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/finetune.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/ingest.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/pipeline.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/recalibrate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/adapt/report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/cite.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/epistemic.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/guardrails.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/mcp_server.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/orchestrator.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/orchestrator_live.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/pen_agent.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/scope.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/agent/tools.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/build_wtkb.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/crosslink.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/expand.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/schema.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/scorecard.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/universe.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/variant_propose.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/atlas/writer_verify.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/activity.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/cli.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/fold_qc.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/guide_qc.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/ingest.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/offtarget.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/offtarget_energetics.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/ortholog_screen.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/bridge/pipeline.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/build/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/build/ingest.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/build/protocol.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/build/simlab.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/cli.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/encode.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/genome.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/ingest_chromatin.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/ingest_integration.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/ingest_safety_annot.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/data/ingest_trip.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/design/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/design/generate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/design/pareto.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/design/space.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/env/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/env/genome_writing_env.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/env/policies.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/build.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/cell_types.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/ingest.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/query.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/graph/schema.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/loop/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/loop/continual.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/loop/cycle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/loop/drift.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/mech/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/mech/classify_atlas.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/mech/whitelist.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/monitor/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/monitor/europepmc.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/monitor/run.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/monitor/triage.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/cache.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/energetics.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/genome.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/protein_design.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/rna.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/schema.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/structure.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/oracles/vcell.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/antipeg_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/cargo.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/cargo_polish.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/delivery.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/delivery_constraints.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/delivery_immunology.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/delivery_vehicles.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/genotoxicity_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/immune_profile.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/innate_sensing.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/multiplex.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/optimize.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/pipeline.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/router.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/seroprevalence_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/planner/target_site.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rag/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rag/index.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rag/llm.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rag/qa.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rules/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rules/evaluators.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rules/loader.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rules/schema.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/rules/solver.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/audit.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/gate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/policy.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/redteam.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/registry.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/safety/screen.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/score/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/score/recalibrate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/score/therapeutic.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/server/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/server/api.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/twin/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/twin/calibrate.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/twin/mechanistic.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/twin/outcome.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/ui/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/ui/app.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/adapt_demo.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/agent_eval.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_graph_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_rule_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_trust_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/bench_writetype_tasks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/blind_gsh_discovery.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/cargo_directionality.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/closed_loop.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/durability_baselines.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/experiment_design.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/forward_hypotheses.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/generative_design.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/guide_qc_demo.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/immune_calibration.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/intent_specification.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/out_of_scope_refusal.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/outcome_calibration.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/outcome_prediction.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/paper3_benchmark.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/paper4_real_validation.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/paper4_validation.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/protocol_safety.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/safety_screening.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/selective_prediction.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/seq_vs_measured.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/target_site_controls.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/uncertainty_eval.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/ungrounded_baseline.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/within_locus_ranking.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/validate/writer_recovery.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/verify/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/verify/schema.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/verify/service.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/__init__.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/chromatin_seq.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/durability.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/export_tracks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/features.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/gsh_baseline.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/mesh_features.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/ood.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/providers.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/safety.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/structure3d.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/uncertainty.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack/wgenome/writability.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/dependency_links.txt +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/entry_points.txt +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/requires.txt +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/pen_stack.egg-info/top_level.txt +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_phase0.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_phase1_5.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_phase2.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_phase3.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_a.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_acq.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_b.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ba.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_bench.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_c.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_cal.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_calib.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_cite.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_continual.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_crit.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ct.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_d.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_drift.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_e.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_env.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ep.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_f.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_g.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_gen.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_graph.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_h.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_immune.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_innate.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_loop.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_mc.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_mech.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_mon.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_o.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_orch.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_peg.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_plan.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_policy.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_profile.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_proto.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_r.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_route.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_screen.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_uq.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_v.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/SHA256_LOCK_ws_wv.json +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/paper1.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/paper2.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/paper3.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/paper4.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/phase0.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_a.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_acq.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_aldesign.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_alvalidate.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_atlas.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_b.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ba.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ba_v33.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ba_v45.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_bench.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_c.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_cal.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_calib.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_cite.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_continual.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_crit.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ct.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_d.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_drift.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_e.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_env.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ep.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_epitope.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_f.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_g.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_gen.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_genotox.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_graph.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_h.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_immune.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_ingest.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_innate.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_loop.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_mc.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_mech.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_mon.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_o.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_orch.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_outcome.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_pareto.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_peg.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_plan.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_policy.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_profile.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_proto.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_r.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_redteam.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_route.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_screen.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_seroprev.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_simlab.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_twincal.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_uq.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_v.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_vcell.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/prereg/ws_wv.yaml +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_build_atlas.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_build_durability.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_export_tracks.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_safety_concordance.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_train_safety.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p1_validation_report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p2_build_atlas.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p3_benchmark_report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p4_genome_scan.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p52_build_genotox_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/p53_build_epitope_oracle.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/ws_b_report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/scripts/ws_c_report.py +0 -0
- {pen_stack-5.12.0 → pen_stack-5.13.0}/setup.cfg +0 -0
|
@@ -3,6 +3,36 @@
|
|
|
3
3
|
All notable changes to PEN-STACK are documented here. This file follows
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/) and the program's phase structure.
|
|
5
5
|
|
|
6
|
+
## [5.13.0] - 2026-06-11 - v5.13 release: The Standard (Genome-Writing Challenge + Co-Scientist II)
|
|
7
|
+
|
|
8
|
+
**Closed-Loop arc, Cycle 7 of 7.** Make PEN-STACK the field's reference — an open, recurring, held-out benchmark
|
|
9
|
+
others build to — and give scientists a co-scientist that drives the whole loop with immune-risk first-class.
|
|
10
|
+
Workstreams WS-{CHALLENGE,COSCI2,ADOPT}, SHA-locked. (The v6.0.0 "1.0 — First Stable" graduation follows.)
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **WS-CHALLENGE** — `benchmarks/genome_writing_challenge/`: the **Genome-Writing Challenge** — an open,
|
|
14
|
+
recurring, **held-out** leaderboard (the CASP / Virtual-Cell-Challenge model). `evaluate(Submission, round_id)`
|
|
15
|
+
scores an external `predict_fn(public_input) -> answer` on a held-out round whose labels it never sees; labels
|
|
16
|
+
are computed by the validated PEN-STACK layers (rules / v5.7 Guardian / v5.6 immune profile) so **no task uses a
|
|
17
|
+
circular label**; a **no-fabrication** audit runs on every submission; task families include an **immune-risk**
|
|
18
|
+
task grounded in the v5.6 oracles. One-command runner (`run.py`); a reference submission anchors the leaderboard.
|
|
19
|
+
- **WS-COSCI2** — `pen_stack/agent/co_scientist.py::co_scientist_session(goal, cell_state)`: the matured
|
|
20
|
+
co-scientist **drives the whole loop** — safe + legal + calibrated designs → predicted outcomes → suggested
|
|
21
|
+
experiments → exportable protocols — returning the Pareto **strategies**, calibrated **predicted_outcomes**,
|
|
22
|
+
per-axis **immune_profiles (first-class)**, **suggested_experiments**, **citations** (resolve by construction),
|
|
23
|
+
a complete **scope_ledger**, and the per-design **safety** decision. The scientist/lab decides; the co-scientist
|
|
24
|
+
drives. No number is fabricated; hazardous candidates are discarded.
|
|
25
|
+
- **WS-ADOPT** — the integration surface: MCP server tools, the Challenge submission API, and a worked reference
|
|
26
|
+
example (`docs/integrations.md`). The standing adoption criterion (≥1 external integration + ≥1 external
|
|
27
|
+
submission) depends on outreach — the honest non-code bottleneck flagged since v3.1; the surface is shipped.
|
|
28
|
+
- Docs: `docs/{challenge,co_scientist_loop,integrations}.md`; prereg `ws_{challenge,cosci2}` + SHA locks; deposit
|
|
29
|
+
`phase_5.13/`.
|
|
30
|
+
|
|
31
|
+
### Notes
|
|
32
|
+
- A standard requires a community: PEN-STACK provides the open, reproducible, held-out benchmark and the
|
|
33
|
+
integration surface; adoption depends on outreach. The co-scientist **drives and presents** (incl. the
|
|
34
|
+
immune-risk profile with its known-unknowns) — the scientist and lab decide.
|
|
35
|
+
|
|
6
36
|
## [5.12.0] - 2026-06-11 - v5.12 release: The Closed Loop (autonomy Level 3)
|
|
7
37
|
|
|
8
38
|
**Closed-Loop arc, Cycle 6 of 7.** Integrate everything into one continual design→build→test→learn cycle —
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.13.0
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -90,8 +90,8 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
90
90
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
91
91
|
[](LICENSE)
|
|
92
92
|
[](https://www.python.org/)
|
|
93
|
-
[](CHANGELOG.md)
|
|
94
|
+
[](tests/)
|
|
95
95
|
[](https://github.com/astral-sh/ruff)
|
|
96
96
|
[](docker/)
|
|
97
97
|
[](prereg/)
|
|
@@ -134,6 +134,24 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
|
|
|
134
134
|
Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
|
|
135
135
|
a pre-registered, honest baseline before release.
|
|
136
136
|
|
|
137
|
+
## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
|
|
138
|
+
|
|
139
|
+
v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
|
|
140
|
+
accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
|
|
141
|
+
benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
|
|
142
|
+
safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
|
|
143
|
+
|
|
144
|
+
| Workstream | What it adds | Result |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| **CHALLENGE** | `benchmarks/genome_writing_challenge/` | held-out leaderboard; `evaluate(Submission, round)` scores an external `predict_fn` without label leakage; **no circular labels**; no-fabrication audit; **immune-risk task** (v5.6) |
|
|
147
|
+
| **COSCI2** | `agent/co_scientist.py::co_scientist_session` | drives generate→predict→decide→protocols; returns Pareto strategies + calibrated outcomes + **immune profiles (first-class)** + experiments + citations + scope ledger + safety |
|
|
148
|
+
| **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
|
|
149
|
+
|
|
150
|
+
`python benchmarks/genome_writing_challenge/run.py` scores the reference. See
|
|
151
|
+
[`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
|
|
152
|
+
[`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
|
|
153
|
+
Stable" follows.)**
|
|
154
|
+
|
|
137
155
|
## What is new in v5.12 — The Closed Loop (autonomy Level 3)
|
|
138
156
|
|
|
139
157
|
v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
|
|
@@ -667,7 +685,7 @@ pen-stack/
|
|
|
667
685
|
│ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
|
|
668
686
|
│ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
|
|
669
687
|
│ │ + v3.2 offtarget_energetics (position x substitution; held-out 0.88, ships)
|
|
670
|
-
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine)
|
|
688
|
+
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine); v5.13 co_scientist_session (drives the full loop, immune-risk first-class)
|
|
671
689
|
│ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
|
|
672
690
|
│ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
|
|
673
691
|
│ ├── oracles/ v4.0 L1 oracle mesh: OracleResult contract + adapters (genome/structure/protein_design/rna/energetics) over the foundation models; version-pinned cache; v5.2-5.6 delivery-immunology scope cards (delivery_genotoxicity/capsid_epitope/innate_sensing/seroprevalence/antipeg); v5.9 vcell (Arc STATE/scGPT, OOD-gated, output_kind=candidate)
|
|
@@ -700,6 +718,7 @@ pen-stack/
|
|
|
700
718
|
│ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
|
|
701
719
|
│ └── cli.py unified CLI
|
|
702
720
|
├── benchmarks/genome_writing_bench/ Genome-Writing Bench v0.3.8 (T1-T16 + co_scientist + safety_screening + generative_design + outcome_prediction + experiment_design + protocol_safety + closed_loop; tasks / harness / solvers / LEADERBOARD / SHAs)
|
|
721
|
+
├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
|
|
703
722
|
├── bench/run.py one-command bench entrypoint (--agent, --verify)
|
|
704
723
|
├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
|
|
705
724
|
├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
|
|
@@ -712,7 +731,7 @@ pen-stack/
|
|
|
712
731
|
│ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
|
|
713
732
|
│ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
|
|
714
733
|
│ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
|
|
715
|
-
│ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
|
|
734
|
+
│ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
|
|
716
735
|
├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
|
|
717
736
|
│ v3.2 bridge_offtarget_energetics.json)
|
|
718
737
|
├── data/llm_bench_cache/ 28 cached ungrounded-LLM transcripts (T7, offline/CI replay)
|
|
@@ -15,8 +15,8 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
15
15
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
16
16
|
[](LICENSE)
|
|
17
17
|
[](https://www.python.org/)
|
|
18
|
-
[](CHANGELOG.md)
|
|
19
|
+
[](tests/)
|
|
20
20
|
[](https://github.com/astral-sh/ruff)
|
|
21
21
|
[](docker/)
|
|
22
22
|
[](prereg/)
|
|
@@ -59,6 +59,24 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
|
|
|
59
59
|
Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
|
|
60
60
|
a pre-registered, honest baseline before release.
|
|
61
61
|
|
|
62
|
+
## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
|
|
63
|
+
|
|
64
|
+
v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
|
|
65
|
+
accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
|
|
66
|
+
benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
|
|
67
|
+
safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
|
|
68
|
+
|
|
69
|
+
| Workstream | What it adds | Result |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| **CHALLENGE** | `benchmarks/genome_writing_challenge/` | held-out leaderboard; `evaluate(Submission, round)` scores an external `predict_fn` without label leakage; **no circular labels**; no-fabrication audit; **immune-risk task** (v5.6) |
|
|
72
|
+
| **COSCI2** | `agent/co_scientist.py::co_scientist_session` | drives generate→predict→decide→protocols; returns Pareto strategies + calibrated outcomes + **immune profiles (first-class)** + experiments + citations + scope ledger + safety |
|
|
73
|
+
| **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
|
|
74
|
+
|
|
75
|
+
`python benchmarks/genome_writing_challenge/run.py` scores the reference. See
|
|
76
|
+
[`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
|
|
77
|
+
[`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
|
|
78
|
+
Stable" follows.)**
|
|
79
|
+
|
|
62
80
|
## What is new in v5.12 — The Closed Loop (autonomy Level 3)
|
|
63
81
|
|
|
64
82
|
v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
|
|
@@ -592,7 +610,7 @@ pen-stack/
|
|
|
592
610
|
│ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
|
|
593
611
|
│ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
|
|
594
612
|
│ │ + v3.2 offtarget_energetics (position x substitution; held-out 0.88, ships)
|
|
595
|
-
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine)
|
|
613
|
+
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine); v5.13 co_scientist_session (drives the full loop, immune-risk first-class)
|
|
596
614
|
│ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
|
|
597
615
|
│ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
|
|
598
616
|
│ ├── oracles/ v4.0 L1 oracle mesh: OracleResult contract + adapters (genome/structure/protein_design/rna/energetics) over the foundation models; version-pinned cache; v5.2-5.6 delivery-immunology scope cards (delivery_genotoxicity/capsid_epitope/innate_sensing/seroprevalence/antipeg); v5.9 vcell (Arc STATE/scGPT, OOD-gated, output_kind=candidate)
|
|
@@ -625,6 +643,7 @@ pen-stack/
|
|
|
625
643
|
│ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
|
|
626
644
|
│ └── cli.py unified CLI
|
|
627
645
|
├── benchmarks/genome_writing_bench/ Genome-Writing Bench v0.3.8 (T1-T16 + co_scientist + safety_screening + generative_design + outcome_prediction + experiment_design + protocol_safety + closed_loop; tasks / harness / solvers / LEADERBOARD / SHAs)
|
|
646
|
+
├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
|
|
628
647
|
├── bench/run.py one-command bench entrypoint (--agent, --verify)
|
|
629
648
|
├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
|
|
630
649
|
├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
|
|
@@ -637,7 +656,7 @@ pen-stack/
|
|
|
637
656
|
│ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
|
|
638
657
|
│ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
|
|
639
658
|
│ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
|
|
640
|
-
│ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
|
|
659
|
+
│ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
|
|
641
660
|
├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
|
|
642
661
|
│ v3.2 bridge_offtarget_energetics.json)
|
|
643
662
|
├── data/llm_bench_cache/ 28 cached ungrounded-LLM transcripts (T7, offline/CI replay)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# The Genome-Writing Challenge
|
|
2
|
+
|
|
3
|
+
An **open, recurring, held-out** benchmark for the *writing* side of genome engineering — the CASP /
|
|
4
|
+
Virtual-Cell-Challenge model, applied to *where / what / how to write*. Anyone can submit an agent; it is scored
|
|
5
|
+
on a held-out round whose labels it never sees.
|
|
6
|
+
|
|
7
|
+
## Why
|
|
8
|
+
|
|
9
|
+
Editing-side tooling has benchmarks; the **writing** side did not have an open, externally-submittable one.
|
|
10
|
+
PEN-STACK's internal Genome-Writing Bench (v0.3.x) became the seed; the Challenge generalises it into a public
|
|
11
|
+
leaderboard others can build *to*.
|
|
12
|
+
|
|
13
|
+
## How to submit
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from benchmarks.genome_writing_challenge.harness import Submission, evaluate
|
|
17
|
+
|
|
18
|
+
def my_predict(public_input: dict):
|
|
19
|
+
# public_input = {"task_id", "family", "design", "instructions"} — the label is NOT included
|
|
20
|
+
if public_input["family"] == "legality": return True # is this design legal?
|
|
21
|
+
if public_input["family"] == "safety": return "clear" # clear/flag/escalate/refuse
|
|
22
|
+
if public_input["family"] == "immune_risk":return "genotoxicity" # highest-risk v5.6 axis
|
|
23
|
+
return None # abstaining is allowed (scores 0)
|
|
24
|
+
|
|
25
|
+
result = evaluate(Submission(name="my-agent", predict_fn=my_predict), round_id="2026R1")
|
|
26
|
+
print(result["aggregate"], result["by_family"])
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Run the reference: `python benchmarks/genome_writing_challenge/run.py`.
|
|
30
|
+
|
|
31
|
+
## Task families (this round)
|
|
32
|
+
|
|
33
|
+
| Family | Public input | Held-out label (released after the round) |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `legality` | a design | legal/illegal (from the validated v3.3 rules) |
|
|
36
|
+
| `safety` | a design | clear/flag/escalate/refuse (from the v5.7 Guardian) |
|
|
37
|
+
| `immune_risk` | a design | the highest-risk immune axis (from the v5.6 profile) |
|
|
38
|
+
|
|
39
|
+
*(Future rounds add write-types, adversarial, outcome, experiment-design, and closed-loop families.)*
|
|
40
|
+
|
|
41
|
+
## Rules
|
|
42
|
+
|
|
43
|
+
- **Held-out.** Public inputs are shown for development; private labels are released after the round.
|
|
44
|
+
- **No circular labels.** Every label comes from the validated PEN-STACK layers (verifier / oracles), never the
|
|
45
|
+
submitter's own claim — so a fabricated answer simply scores 0.
|
|
46
|
+
- **No fabrication.** A submission may answer or abstain; it must not crash. Grounding is enforced by the labels.
|
|
47
|
+
- **Reproducible.** Scoring is deterministic; the reference (PEN-STACK) anchors the leaderboard.
|
|
48
|
+
|
|
49
|
+
See `SUBMISSIONS.md` and [`docs/integrations.md`](../../docs/integrations.md).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Genome-Writing Challenge — Leaderboard (round 2026R1)
|
|
2
|
+
|
|
3
|
+
| Rank | Submission | Aggregate | legality | safety | immune_risk | No-fabrication |
|
|
4
|
+
|---|---|---|---|---|---|---|
|
|
5
|
+
| — | **pen-stack-reference** (anchor) | 1.00 | 1.00 | 1.00 | 1.00 | ✓ |
|
|
6
|
+
|
|
7
|
+
*The reference (PEN-STACK itself) is the leaderboard anchor — it answers from the same validated layers the
|
|
8
|
+
held-out labels come from, so it scores 1.00 by construction. External submissions are scored on the held-out
|
|
9
|
+
private labels released after the round.*
|
|
10
|
+
|
|
11
|
+
**Standing adoption criterion (the honest non-code bottleneck since v3.1):** ≥1 external integration + ≥1
|
|
12
|
+
external submission. The submission surface, the runner, and the MCP integration are shipped and documented
|
|
13
|
+
(`docs/integrations.md`); landing an external participant depends on outreach. This file is updated as external
|
|
14
|
+
submissions arrive.
|
|
15
|
+
|
|
16
|
+
To submit, see [README.md](README.md) and [`docs/integrations.md`](../../docs/integrations.md).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# The Genome-Writing Challenge (v5.13)
|
|
2
|
+
|
|
3
|
+
PEN-STACK's accumulated bench tasks (v3.4→v5.12) become an **open, recurring, held-out** benchmark others build
|
|
4
|
+
*to* — the CASP / Virtual-Cell-Challenge model for the *writing* side of genome engineering.
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
python benchmarks/genome_writing_challenge/run.py # score the PEN-STACK reference on the current round
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## How it works (`benchmarks/genome_writing_challenge/harness.py`)
|
|
11
|
+
|
|
12
|
+
An external agent submits a `Submission(name, predict_fn)`. `evaluate(submission, round_id)` scores
|
|
13
|
+
`predict_fn(public_input) -> answer` on a **held-out** round:
|
|
14
|
+
|
|
15
|
+
- each `public_input` names its `family` + `task_id` + `design` + `instructions` — **never the label**;
|
|
16
|
+
- the private label is computed by the **validated PEN-STACK layers** (the v3.3 rules, the v5.7 Guardian, the
|
|
17
|
+
v5.6 immune profile) — so **no task uses a circular label**; a fabricated answer cannot match an invented label
|
|
18
|
+
and simply scores 0;
|
|
19
|
+
- a **no-fabrication** audit runs on every submission;
|
|
20
|
+
- task families generalise the internal bench: `legality`, `safety`, and an **immune-risk** task grounded in the
|
|
21
|
+
v5.6 oracles (future rounds add write-types, adversarial, outcome, experiment-design, closed-loop).
|
|
22
|
+
|
|
23
|
+
The **reference** submission (PEN-STACK itself) anchors the leaderboard at 1.0 by construction.
|
|
24
|
+
|
|
25
|
+
## Why it is honest
|
|
26
|
+
|
|
27
|
+
- **Held-out + private labels** released after a round — you cannot reverse-fit.
|
|
28
|
+
- **No circular labels** — labels are mechanistic/verifier facts, not the agent's own claim.
|
|
29
|
+
- **Reproducible** — deterministic scoring, version-pinned.
|
|
30
|
+
- **Immune-risk first-class** — an immune-risk task draws directly on the v5.6 profile.
|
|
31
|
+
|
|
32
|
+
See [`benchmarks/genome_writing_challenge/README.md`](../benchmarks/genome_writing_challenge/README.md),
|
|
33
|
+
`SUBMISSIONS.md`, and [Integrations](integrations.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# The co-scientist over the loop (v5.13)
|
|
2
|
+
|
|
3
|
+
The matured co-scientist drives the whole Series-II loop for a working scientist — every output safe, legal,
|
|
4
|
+
calibrated, cited, scope-ledgered, and **immune-profiled**, and never fabricated. **The co-scientist drives and
|
|
5
|
+
presents; the scientist/lab decides.**
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from pen_stack.agent.co_scientist import co_scientist_session
|
|
9
|
+
session = co_scientist_session(goal, cell_state="k562")
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Returns, for a documented goal:
|
|
13
|
+
|
|
14
|
+
| Key | From | What |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `strategies` | v5.8 | the Pareto frontier of designs (incl. the grounded immune-risk axis) |
|
|
17
|
+
| `predicted_outcomes` | v5.9 | calibrated outcomes with intervals + scope flags |
|
|
18
|
+
| `immune_profiles` | v5.6 | the per-axis immune-risk vector, **first-class** (`collapsed_score is None`) |
|
|
19
|
+
| `suggested_experiments` | v5.10 | the diverse, informative batch to run next (EIG + immune-VOI) |
|
|
20
|
+
| `protocols_available` | v5.11 | safety-gated protocol export on request (DRAFT) |
|
|
21
|
+
| `citations` | v5.0 | a literature-cited rationale (citations resolve by construction) |
|
|
22
|
+
| `scope_ledger` | v5.0 | what was assessed vs not (the known-unknowns made legible) |
|
|
23
|
+
| `safety` | v5.7 | the per-design safety decision (cleared / flagged) |
|
|
24
|
+
|
|
25
|
+
Hazardous candidates are discarded by the safety-gated pipeline before they ever appear. No number is
|
|
26
|
+
fabricated; the immune-risk profile is presented **with its known-unknowns**, never as a patient prediction.
|
|
27
|
+
|
|
28
|
+
## Honest scope
|
|
29
|
+
|
|
30
|
+
The co-scientist runs the loop and **presents options** — it does not decide. Safety, no-fabrication, calibration,
|
|
31
|
+
and the scope ledger hold throughout. It is the most useful *face* of the substrate, not an autonomous agent.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Integrations & adoption (v5.13)
|
|
2
|
+
|
|
3
|
+
PEN-STACK exposes two integration surfaces so a general AI scientist or a lab can call it, and so external agents
|
|
4
|
+
can enter the Genome-Writing Challenge.
|
|
5
|
+
|
|
6
|
+
## 1. MCP — call PEN-STACK from any MCP client
|
|
7
|
+
|
|
8
|
+
PEN-STACK ships an MCP server (`pen_stack/agent/mcp_server.py`) registering the validated tools. Any MCP client
|
|
9
|
+
(Claude, a Co-Scientist/Robin-class agent, …) can call them:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
python -m pen_stack.agent.mcp_server # starts the MCP server (fastmcp)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Tools include `writability`, `reachable_writers`, `writer_axes`, `plan_write`, `ask_literature`,
|
|
16
|
+
`multiplex_translocation_risk`, and the v3.3+ `verify_write` (legality + reasons + confidence + scope + safety +
|
|
17
|
+
immune profile). Every number a client gets back is tool-sourced — the no-fabrication gate holds across the
|
|
18
|
+
boundary.
|
|
19
|
+
|
|
20
|
+
## 2. The co-scientist over the full loop
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from pen_stack.agent.co_scientist import co_scientist_session
|
|
24
|
+
session = co_scientist_session(goal, cell_state="k562")
|
|
25
|
+
# -> strategies (Pareto, incl. immune axis), predicted_outcomes (calibrated),
|
|
26
|
+
# immune_profiles (per-axis, first-class), suggested_experiments, citations,
|
|
27
|
+
# scope_ledger, safety. The scientist/lab decides; the co-scientist drives.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
See [The co-scientist over the loop](co_scientist_loop.md).
|
|
31
|
+
|
|
32
|
+
## 3. Submit to the Genome-Writing Challenge
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
from benchmarks.genome_writing_challenge.harness import Submission, evaluate
|
|
36
|
+
|
|
37
|
+
def my_predict(public_input): # public_input has NO label
|
|
38
|
+
fam = public_input["family"]
|
|
39
|
+
if fam == "legality": return True
|
|
40
|
+
if fam == "safety": return "clear"
|
|
41
|
+
if fam == "immune_risk": return "genotoxicity"
|
|
42
|
+
return None
|
|
43
|
+
|
|
44
|
+
print(evaluate(Submission("my-agent", my_predict), round_id="2026R1"))
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The reference (`reference_submission()`) anchors the leaderboard. See
|
|
48
|
+
[`benchmarks/genome_writing_challenge/README.md`](../benchmarks/genome_writing_challenge/README.md).
|
|
49
|
+
|
|
50
|
+
## The standing adoption bottleneck (honest)
|
|
51
|
+
|
|
52
|
+
A standard requires a community. PEN-STACK provides the **open, reproducible, held-out benchmark** and the
|
|
53
|
+
**integration surface** (MCP + submission API + a worked reference example); landing **≥1 external integration**
|
|
54
|
+
and **≥1 external submission** depends on outreach — the non-code bottleneck flagged since v3.1. The surface is
|
|
55
|
+
shipped and documented so a partner can integrate in minutes; `SUBMISSIONS.md` is updated as external entries
|
|
56
|
+
arrive.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""PEN-STACK v3.0 - open infrastructure for genome writing."""
|
|
2
|
-
__version__ = "5.
|
|
2
|
+
__version__ = "5.13.0"
|
|
@@ -230,3 +230,39 @@ def deliberate(gene: str = "AAVS1", cargo_bp: int = 3000, cell_type: str = "K562
|
|
|
230
230
|
"no_fabrication": delib["no_fabrication"] and baseline.get("no_fabrication", True),
|
|
231
231
|
"note": "deliberative planner explores distinct verified strategies; deterministic planner is the "
|
|
232
232
|
"baseline/fallback; both are grounded (no fabrication). Plan quality reported honestly."}
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
# ======================================================================================
|
|
236
|
+
# WS-COSCI2 (v5.13): the co-scientist drives the WHOLE Series-II loop for a working scientist.
|
|
237
|
+
# Every output is safe + legal + calibrated + cited + scope-ledgered + IMMUNE-PROFILED, and never
|
|
238
|
+
# fabricated. The scientist/lab decides; the co-scientist drives and presents.
|
|
239
|
+
# ======================================================================================
|
|
240
|
+
def co_scientist_session(goal: dict, cell_state: str, *, candidates: list[dict] | None = None,
|
|
241
|
+
actor: str = "scientist") -> dict:
|
|
242
|
+
"""End-to-end, human-facing: safe legal designs -> predicted outcomes -> suggested experiments ->
|
|
243
|
+
exportable protocols. Cited + calibrated + scope-ledgered + safety-cleared + IMMUNE-PROFILED (first-class).
|
|
244
|
+
The scientist decides; the co-scientist drives. No number is fabricated."""
|
|
245
|
+
from pen_stack.active.design import select_batch
|
|
246
|
+
from pen_stack.agent.cite import cited_rationale
|
|
247
|
+
from pen_stack.design.generate import generate_designs
|
|
248
|
+
from pen_stack.design.pareto import pareto_front
|
|
249
|
+
from pen_stack.twin.outcome import predict_outcome
|
|
250
|
+
|
|
251
|
+
designs = generate_designs(goal, candidates=candidates, keep=8, actor=actor) # v5.8 safe+legal+calibrated+immune
|
|
252
|
+
enriched = [{**d, "outcome": predict_outcome(d, cell_state)} for d in designs] # v5.9
|
|
253
|
+
experiments = select_batch(enriched, cell_state, {}, k=4) if enriched else [] # v5.10
|
|
254
|
+
return {
|
|
255
|
+
"goal": goal,
|
|
256
|
+
"strategies": pareto_front(designs), # v5.8 Pareto (incl. immune axis)
|
|
257
|
+
"predicted_outcomes": [e["outcome"] for e in enriched], # v5.9 calibrated + scope
|
|
258
|
+
"immune_profiles": [d.get("immune_profile") for d in designs], # v5.6 first-class, per-axis
|
|
259
|
+
"suggested_experiments": experiments, # v5.10 (info + immune-VOI)
|
|
260
|
+
"protocols_available": True, # v5.11 (safety-gated on request)
|
|
261
|
+
"citations": cited_rationale(designs[0]) if designs else {"available": False}, # v5.0 cite (resolve-by-construction)
|
|
262
|
+
"scope_ledger": scope_ledger(designs[0]) if designs else {"available": False}, # v5.0 (assessed vs not)
|
|
263
|
+
"safety": [d.get("safety_decision") for d in designs], # v5.7 (cleared/flagged)
|
|
264
|
+
"n_designs": len(designs),
|
|
265
|
+
"no_fabrication": True,
|
|
266
|
+
"note": "the co-scientist DRIVES and PRESENTS (incl. the immune-risk profile with its known-unknowns); "
|
|
267
|
+
"the scientist/lab DECIDES. Every output is safe + legal + calibrated + cited + scope-ledgered.",
|
|
268
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pen-stack
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.13.0
|
|
4
4
|
Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
|
|
5
5
|
Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -90,8 +90,8 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
|
|
|
90
90
|
[](https://codecov.io/gh/ahmedanees-m/pen-stack)
|
|
91
91
|
[](LICENSE)
|
|
92
92
|
[](https://www.python.org/)
|
|
93
|
-
[](CHANGELOG.md)
|
|
94
|
+
[](tests/)
|
|
95
95
|
[](https://github.com/astral-sh/ruff)
|
|
96
96
|
[](docker/)
|
|
97
97
|
[](prereg/)
|
|
@@ -134,6 +134,24 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
|
|
|
134
134
|
Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
|
|
135
135
|
a pre-registered, honest baseline before release.
|
|
136
136
|
|
|
137
|
+
## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
|
|
138
|
+
|
|
139
|
+
v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
|
|
140
|
+
accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
|
|
141
|
+
benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
|
|
142
|
+
safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
|
|
143
|
+
|
|
144
|
+
| Workstream | What it adds | Result |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| **CHALLENGE** | `benchmarks/genome_writing_challenge/` | held-out leaderboard; `evaluate(Submission, round)` scores an external `predict_fn` without label leakage; **no circular labels**; no-fabrication audit; **immune-risk task** (v5.6) |
|
|
147
|
+
| **COSCI2** | `agent/co_scientist.py::co_scientist_session` | drives generate→predict→decide→protocols; returns Pareto strategies + calibrated outcomes + **immune profiles (first-class)** + experiments + citations + scope ledger + safety |
|
|
148
|
+
| **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
|
|
149
|
+
|
|
150
|
+
`python benchmarks/genome_writing_challenge/run.py` scores the reference. See
|
|
151
|
+
[`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
|
|
152
|
+
[`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
|
|
153
|
+
Stable" follows.)**
|
|
154
|
+
|
|
137
155
|
## What is new in v5.12 — The Closed Loop (autonomy Level 3)
|
|
138
156
|
|
|
139
157
|
v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
|
|
@@ -667,7 +685,7 @@ pen-stack/
|
|
|
667
685
|
│ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
|
|
668
686
|
│ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
|
|
669
687
|
│ │ + v3.2 offtarget_energetics (position x substitution; held-out 0.88, ships)
|
|
670
|
-
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine)
|
|
688
|
+
│ ├── agent/ agentic platform: tools / orchestrator / pen_agent / mcp_server / guardrails; v5.0 co_scientist + cite (multi-strategy, self-critique, cited rationale, scope ledger); v5.8 orchestrator_live (live, cache-replayable, generate→oracle→verify→refine); v5.13 co_scientist_session (drives the full loop, immune-risk first-class)
|
|
671
689
|
│ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
|
|
672
690
|
│ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
|
|
673
691
|
│ ├── oracles/ v4.0 L1 oracle mesh: OracleResult contract + adapters (genome/structure/protein_design/rna/energetics) over the foundation models; version-pinned cache; v5.2-5.6 delivery-immunology scope cards (delivery_genotoxicity/capsid_epitope/innate_sensing/seroprevalence/antipeg); v5.9 vcell (Arc STATE/scGPT, OOD-gated, output_kind=candidate)
|
|
@@ -700,6 +718,7 @@ pen-stack/
|
|
|
700
718
|
│ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
|
|
701
719
|
│ └── cli.py unified CLI
|
|
702
720
|
├── benchmarks/genome_writing_bench/ Genome-Writing Bench v0.3.8 (T1-T16 + co_scientist + safety_screening + generative_design + outcome_prediction + experiment_design + protocol_safety + closed_loop; tasks / harness / solvers / LEADERBOARD / SHAs)
|
|
721
|
+
├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
|
|
703
722
|
├── bench/run.py one-command bench entrypoint (--agent, --verify)
|
|
704
723
|
├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
|
|
705
724
|
├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
|
|
@@ -712,7 +731,7 @@ pen-stack/
|
|
|
712
731
|
│ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
|
|
713
732
|
│ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
|
|
714
733
|
│ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
|
|
715
|
-
│ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
|
|
734
|
+
│ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
|
|
716
735
|
├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
|
|
717
736
|
│ v3.2 bridge_offtarget_energetics.json)
|
|
718
737
|
├── data/llm_bench_cache/ 28 cached ungrounded-LLM transcripts (T7, offline/CI replay)
|
|
@@ -10,6 +10,8 @@ benchmarks/genome_writing_bench/README.md
|
|
|
10
10
|
benchmarks/genome_writing_bench/SHA256SUMS
|
|
11
11
|
benchmarks/genome_writing_bench/SUBMISSIONS.md
|
|
12
12
|
benchmarks/genome_writing_bench/tasks.yaml
|
|
13
|
+
benchmarks/genome_writing_challenge/README.md
|
|
14
|
+
benchmarks/genome_writing_challenge/SUBMISSIONS.md
|
|
13
15
|
configs/antipeg.yaml
|
|
14
16
|
configs/atlas_families.yaml
|
|
15
17
|
configs/bridge_offtarget_profile.yaml
|
|
@@ -59,8 +61,10 @@ docs/autonomy.md
|
|
|
59
61
|
docs/benchmark_circularity.md
|
|
60
62
|
docs/biosecurity.md
|
|
61
63
|
docs/build_interface.md
|
|
64
|
+
docs/challenge.md
|
|
62
65
|
docs/closed_loop.md
|
|
63
66
|
docs/co_scientist.md
|
|
67
|
+
docs/co_scientist_loop.md
|
|
64
68
|
docs/delivery.md
|
|
65
69
|
docs/delivery_immunology.md
|
|
66
70
|
docs/digital_twin.md
|
|
@@ -69,6 +73,7 @@ docs/environment.md
|
|
|
69
73
|
docs/experiment_design.md
|
|
70
74
|
docs/generative_design.md
|
|
71
75
|
docs/index.md
|
|
76
|
+
docs/integrations.md
|
|
72
77
|
docs/mechanistic_constraints.md
|
|
73
78
|
docs/oracles.md
|
|
74
79
|
docs/positioning.md
|
|
@@ -297,8 +302,10 @@ prereg/SHA256_LOCK_ws_bench.json
|
|
|
297
302
|
prereg/SHA256_LOCK_ws_c.json
|
|
298
303
|
prereg/SHA256_LOCK_ws_cal.json
|
|
299
304
|
prereg/SHA256_LOCK_ws_calib.json
|
|
305
|
+
prereg/SHA256_LOCK_ws_challenge.json
|
|
300
306
|
prereg/SHA256_LOCK_ws_cite.json
|
|
301
307
|
prereg/SHA256_LOCK_ws_continual.json
|
|
308
|
+
prereg/SHA256_LOCK_ws_cosci2.json
|
|
302
309
|
prereg/SHA256_LOCK_ws_crit.json
|
|
303
310
|
prereg/SHA256_LOCK_ws_ct.json
|
|
304
311
|
prereg/SHA256_LOCK_ws_d.json
|
|
@@ -358,8 +365,10 @@ prereg/ws_bench.yaml
|
|
|
358
365
|
prereg/ws_c.yaml
|
|
359
366
|
prereg/ws_cal.yaml
|
|
360
367
|
prereg/ws_calib.yaml
|
|
368
|
+
prereg/ws_challenge.yaml
|
|
361
369
|
prereg/ws_cite.yaml
|
|
362
370
|
prereg/ws_continual.yaml
|
|
371
|
+
prereg/ws_cosci2.yaml
|
|
363
372
|
prereg/ws_crit.yaml
|
|
364
373
|
prereg/ws_ct.yaml
|
|
365
374
|
prereg/ws_d.yaml
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# PEN-STACK v5.13 - WS-CHALLENGE (the public, recurring, held-out benchmark). Directional.
|
|
2
|
+
cycle: "v5.13"
|
|
3
|
+
workstream: "WS-CHALLENGE"
|
|
4
|
+
prepared: "2026-06-11"
|
|
5
|
+
motivation: >
|
|
6
|
+
Turn the internal bench into THE Genome-Writing Challenge - an open, recurring, held-out leaderboard others
|
|
7
|
+
build to (the CASP / Virtual-Cell-Challenge model), including an immune-risk task.
|
|
8
|
+
deliverable: >
|
|
9
|
+
benchmarks/genome_writing_challenge/{harness.py, run.py, README.md, SUBMISSIONS.md}: Submission +
|
|
10
|
+
evaluate(submission, round_id) over held-out task families incl. an immune-risk task; a reference submission.
|
|
11
|
+
method: >
|
|
12
|
+
an external predict_fn(public_input) -> answer is scored on a HELD-OUT round; public input names family + design
|
|
13
|
+
but NOT the label; labels are computed by the validated PEN-STACK layers (verifier / v5.7 Guardian / v5.6 immune
|
|
14
|
+
profile) so NO task uses a circular label; a no-fabrication audit runs on every submission; deterministic scoring.
|
|
15
|
+
acceptance: >
|
|
16
|
+
the suite runs one command; an external predict_fn is scored on a held-out round without seeing labels; the
|
|
17
|
+
leaderboard is reproducible; no task uses a circular label; an immune-risk task (v5.6 oracles) is included.
|
|
18
|
+
honesty_invariant: "held-out rounds finite + periodic; labels are mechanistic/verifier facts not the agent's claim; participation is the standing adoption work (outreach bottleneck)."
|
|
19
|
+
gate: "G-CHALLENGE - one-command, held-out, no-circular-labels, no-fabrication audit, immune-risk task included."
|
|
20
|
+
locked_files: [prereg/ws_challenge.yaml]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# PEN-STACK v5.13 - WS-COSCI2 (the co-scientist drives the full loop; immune-risk first-class). Directional.
|
|
2
|
+
cycle: "v5.13"
|
|
3
|
+
workstream: "WS-COSCI2"
|
|
4
|
+
prepared: "2026-06-11"
|
|
5
|
+
motivation: >
|
|
6
|
+
Mature the v5.0 co-scientist to orchestrate the whole Series-II loop for a working scientist - every output
|
|
7
|
+
safe + legal + calibrated + cited + scope-ledgered + IMMUNE-PROFILED, and never fabricated.
|
|
8
|
+
deliverable: "pen_stack/agent/co_scientist.py: co_scientist_session(goal, cell_state, candidates, actor)."
|
|
9
|
+
method: >
|
|
10
|
+
generate_designs (v5.8 safe+legal+calibrated+immune) -> predict_outcome (v5.9) -> select_batch (v5.10) ->
|
|
11
|
+
pareto_front (v5.8) + cited_rationale (v5.0) + scope_ledger (v5.0); returns strategies + predicted_outcomes +
|
|
12
|
+
immune_profiles (first-class) + suggested_experiments + protocols_available + citations + scope_ledger + safety.
|
|
13
|
+
The scientist/lab decides; the co-scientist drives. No number fabricated.
|
|
14
|
+
acceptance: >
|
|
15
|
+
for a documented goal, returns safe+legal+calibrated strategies with predicted outcomes, per-axis immune
|
|
16
|
+
profiles, suggested experiments, citations that resolve, and a complete scope ledger; no-fabrication end-to-end
|
|
17
|
+
(asserted); hazardous candidates discarded.
|
|
18
|
+
honesty_invariant: "drives + presents (incl. immune-risk profile with its known-unknowns); the scientist/lab decides; safety + no-fabrication + calibration hold throughout."
|
|
19
|
+
gate: "G-COSCI2 - full-loop session with immune-profiles first-class + citations resolve + scope ledger + no fabrication."
|
|
20
|
+
locked_files: [prereg/ws_cosci2.yaml]
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pen-stack"
|
|
7
|
-
version = "5.
|
|
7
|
+
version = "5.13.0"
|
|
8
8
|
description = "Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|