pen-stack 5.12.0__tar.gz → 6.0.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.
Files changed (428) hide show
  1. {pen_stack-5.12.0 → pen_stack-6.0.0}/CHANGELOG.md +50 -0
  2. {pen_stack-5.12.0 → pen_stack-6.0.0}/CITATION.cff +1 -1
  3. {pen_stack-5.12.0 → pen_stack-6.0.0}/PKG-INFO +39 -6
  4. {pen_stack-5.12.0 → pen_stack-6.0.0}/README.md +37 -4
  5. pen_stack-6.0.0/benchmarks/genome_writing_challenge/README.md +49 -0
  6. pen_stack-6.0.0/benchmarks/genome_writing_challenge/SUBMISSIONS.md +16 -0
  7. pen_stack-6.0.0/docs/STABILITY.md +51 -0
  8. pen_stack-6.0.0/docs/challenge.md +33 -0
  9. pen_stack-6.0.0/docs/co_scientist_loop.md +31 -0
  10. pen_stack-6.0.0/docs/integrations.md +56 -0
  11. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/__init__.py +1 -1
  12. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/co_scientist.py +36 -0
  13. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/PKG-INFO +39 -6
  14. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/SOURCES.txt +10 -0
  15. pen_stack-6.0.0/prereg/SHA256_LOCK_ws_challenge.json +8 -0
  16. pen_stack-6.0.0/prereg/SHA256_LOCK_ws_cosci2.json +8 -0
  17. pen_stack-6.0.0/prereg/ws_challenge.yaml +20 -0
  18. pen_stack-6.0.0/prereg/ws_cosci2.yaml +20 -0
  19. {pen_stack-5.12.0 → pen_stack-6.0.0}/pyproject.toml +2 -2
  20. {pen_stack-5.12.0 → pen_stack-6.0.0}/LICENSE +0 -0
  21. {pen_stack-5.12.0 → pen_stack-6.0.0}/MANIFEST.in +0 -0
  22. {pen_stack-5.12.0 → pen_stack-6.0.0}/bench/run.py +0 -0
  23. {pen_stack-5.12.0 → pen_stack-6.0.0}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  24. {pen_stack-5.12.0 → pen_stack-6.0.0}/benchmarks/genome_writing_bench/README.md +0 -0
  25. {pen_stack-5.12.0 → pen_stack-6.0.0}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  26. {pen_stack-5.12.0 → pen_stack-6.0.0}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  27. {pen_stack-5.12.0 → pen_stack-6.0.0}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  28. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/antipeg.yaml +0 -0
  29. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/atlas_families.yaml +0 -0
  30. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/bridge_offtarget_profile.yaml +0 -0
  31. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/capsid_epitope_oracle.yaml +0 -0
  32. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/capsid_sequences.fasta +0 -0
  33. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/cargo_polish.yaml +0 -0
  34. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/cell_types.yaml +0 -0
  35. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/datasets.yaml +0 -0
  36. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/delivery_constraints.yaml +0 -0
  37. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/delivery_rules.yaml +0 -0
  38. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/delivery_vehicles.yaml +0 -0
  39. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/gates_v3.yaml +0 -0
  40. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/genotoxicity_oracle.yaml +0 -0
  41. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/gsh_validated_heldout.yaml +0 -0
  42. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/intent_weights.yaml +0 -0
  43. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/known_unknowns.yaml +0 -0
  44. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/llm.yaml +0 -0
  45. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/monitor_queries.yaml +0 -0
  46. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/oracles/scope_cards.yaml +0 -0
  47. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/rules/delivery.yaml +0 -0
  48. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/rules/fold.yaml +0 -0
  49. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/rules/multiplex.yaml +0 -0
  50. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/rules/payload.yaml +0 -0
  51. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/rules/reachability.yaml +0 -0
  52. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/safety/hazard_registry.yaml +0 -0
  53. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/safety/policy.yaml +0 -0
  54. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/safety/probes.yaml +0 -0
  55. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/score_axes.yaml +0 -0
  56. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/seroprevalence.yaml +0 -0
  57. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/target_sites.yaml +0 -0
  58. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/universe_crosswalk.yaml +0 -0
  59. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/write_types.yaml +0 -0
  60. {pen_stack-5.12.0 → pen_stack-6.0.0}/configs/wtkb_curated.yaml +0 -0
  61. {pen_stack-5.12.0 → pen_stack-6.0.0}/data/curated/bridge_offtarget_energetics.json +0 -0
  62. {pen_stack-5.12.0 → pen_stack-6.0.0}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  63. {pen_stack-5.12.0 → pen_stack-6.0.0}/data/curated/gene_coords.parquet +0 -0
  64. {pen_stack-5.12.0 → pen_stack-6.0.0}/data/curated/unified_editor_universe.parquet +0 -0
  65. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/BACKLOG.md +0 -0
  66. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/DEPLOY.md +0 -0
  67. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/INFRA.md +0 -0
  68. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/MCP.md +0 -0
  69. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/RELEASING.md +0 -0
  70. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/REPRO.md +0 -0
  71. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/agent.md +0 -0
  72. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/alphagenome_feasibility.md +0 -0
  73. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/autonomy.md +0 -0
  74. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/benchmark_circularity.md +0 -0
  75. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/biosecurity.md +0 -0
  76. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/build_interface.md +0 -0
  77. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/cards/atlas.md +0 -0
  78. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/cards/durability.md +0 -0
  79. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/cards/safety.md +0 -0
  80. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/closed_loop.md +0 -0
  81. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/co_scientist.md +0 -0
  82. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/delivery.md +0 -0
  83. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/delivery_immunology.md +0 -0
  84. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/digital_twin.md +0 -0
  85. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/dissemination.md +0 -0
  86. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/environment.md +0 -0
  87. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/experiment_design.md +0 -0
  88. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/generative_design.md +0 -0
  89. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/index.md +0 -0
  90. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/mechanistic_constraints.md +0 -0
  91. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/oracles.md +0 -0
  92. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/positioning.md +0 -0
  93. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/private_data_formats.md +0 -0
  94. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/quickstart.md +0 -0
  95. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/responsible_use.md +0 -0
  96. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/rules.md +0 -0
  97. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/scope.md +0 -0
  98. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/scorecard.md +0 -0
  99. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/tutorials/compare-families.md +0 -0
  100. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/tutorials/score-deliverability.md +0 -0
  101. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/tutorials/where-can-i-write.md +0 -0
  102. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  103. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/uncertainty.md +0 -0
  104. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/verify.md +0 -0
  105. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/world_model.md +0 -0
  106. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/writer_verification.md +0 -0
  107. {pen_stack-5.12.0 → pen_stack-6.0.0}/docs/wtkb.md +0 -0
  108. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/_resources.py +0 -0
  109. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/active/__init__.py +0 -0
  110. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/active/acquire.py +0 -0
  111. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/active/design.py +0 -0
  112. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/active/validate.py +0 -0
  113. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/__init__.py +0 -0
  114. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/finetune.py +0 -0
  115. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/ingest.py +0 -0
  116. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/pipeline.py +0 -0
  117. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/recalibrate.py +0 -0
  118. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/adapt/report.py +0 -0
  119. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/__init__.py +0 -0
  120. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/cite.py +0 -0
  121. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/epistemic.py +0 -0
  122. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/guardrails.py +0 -0
  123. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/mcp_server.py +0 -0
  124. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/orchestrator.py +0 -0
  125. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/orchestrator_live.py +0 -0
  126. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/pen_agent.py +0 -0
  127. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/scope.py +0 -0
  128. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/agent/tools.py +0 -0
  129. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/__init__.py +0 -0
  130. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/build_wtkb.py +0 -0
  131. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/crosslink.py +0 -0
  132. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/expand.py +0 -0
  133. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/schema.py +0 -0
  134. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/scorecard.py +0 -0
  135. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/universe.py +0 -0
  136. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/variant_propose.py +0 -0
  137. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/atlas/writer_verify.py +0 -0
  138. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/__init__.py +0 -0
  139. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/activity.py +0 -0
  140. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/cli.py +0 -0
  141. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/fold_qc.py +0 -0
  142. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/guide_qc.py +0 -0
  143. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/ingest.py +0 -0
  144. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/offtarget.py +0 -0
  145. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/offtarget_energetics.py +0 -0
  146. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/ortholog_screen.py +0 -0
  147. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/bridge/pipeline.py +0 -0
  148. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/build/__init__.py +0 -0
  149. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/build/ingest.py +0 -0
  150. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/build/protocol.py +0 -0
  151. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/build/simlab.py +0 -0
  152. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/cli.py +0 -0
  153. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/__init__.py +0 -0
  154. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/encode.py +0 -0
  155. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/genome.py +0 -0
  156. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/ingest_chromatin.py +0 -0
  157. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/ingest_integration.py +0 -0
  158. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/ingest_safety_annot.py +0 -0
  159. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/data/ingest_trip.py +0 -0
  160. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/design/__init__.py +0 -0
  161. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/design/generate.py +0 -0
  162. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/design/pareto.py +0 -0
  163. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/design/space.py +0 -0
  164. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/env/__init__.py +0 -0
  165. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/env/genome_writing_env.py +0 -0
  166. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/env/policies.py +0 -0
  167. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/__init__.py +0 -0
  168. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/build.py +0 -0
  169. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/cell_types.py +0 -0
  170. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/ingest.py +0 -0
  171. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/query.py +0 -0
  172. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/graph/schema.py +0 -0
  173. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/loop/__init__.py +0 -0
  174. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/loop/continual.py +0 -0
  175. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/loop/cycle.py +0 -0
  176. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/loop/drift.py +0 -0
  177. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/mech/__init__.py +0 -0
  178. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/mech/classify_atlas.py +0 -0
  179. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/mech/whitelist.py +0 -0
  180. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/monitor/__init__.py +0 -0
  181. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/monitor/europepmc.py +0 -0
  182. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/monitor/run.py +0 -0
  183. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/monitor/triage.py +0 -0
  184. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/__init__.py +0 -0
  185. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/cache.py +0 -0
  186. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/energetics.py +0 -0
  187. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/genome.py +0 -0
  188. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/protein_design.py +0 -0
  189. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/rna.py +0 -0
  190. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/schema.py +0 -0
  191. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/structure.py +0 -0
  192. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/oracles/vcell.py +0 -0
  193. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/__init__.py +0 -0
  194. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/antipeg_oracle.py +0 -0
  195. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
  196. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/cargo.py +0 -0
  197. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/cargo_polish.py +0 -0
  198. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/delivery.py +0 -0
  199. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/delivery_constraints.py +0 -0
  200. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/delivery_immunology.py +0 -0
  201. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/delivery_vehicles.py +0 -0
  202. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/genotoxicity_oracle.py +0 -0
  203. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/immune_profile.py +0 -0
  204. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/innate_sensing.py +0 -0
  205. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/multiplex.py +0 -0
  206. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/optimize.py +0 -0
  207. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/pipeline.py +0 -0
  208. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/report.py +0 -0
  209. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/router.py +0 -0
  210. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/seroprevalence_oracle.py +0 -0
  211. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/planner/target_site.py +0 -0
  212. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rag/__init__.py +0 -0
  213. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rag/index.py +0 -0
  214. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rag/llm.py +0 -0
  215. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rag/qa.py +0 -0
  216. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rules/__init__.py +0 -0
  217. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rules/evaluators.py +0 -0
  218. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rules/loader.py +0 -0
  219. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rules/schema.py +0 -0
  220. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/rules/solver.py +0 -0
  221. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/__init__.py +0 -0
  222. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/audit.py +0 -0
  223. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/gate.py +0 -0
  224. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/policy.py +0 -0
  225. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/redteam.py +0 -0
  226. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/registry.py +0 -0
  227. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/safety/screen.py +0 -0
  228. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/score/__init__.py +0 -0
  229. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/score/recalibrate.py +0 -0
  230. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/score/therapeutic.py +0 -0
  231. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/server/__init__.py +0 -0
  232. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/server/api.py +0 -0
  233. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/twin/__init__.py +0 -0
  234. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/twin/calibrate.py +0 -0
  235. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/twin/mechanistic.py +0 -0
  236. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/twin/outcome.py +0 -0
  237. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/ui/__init__.py +0 -0
  238. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/ui/app.py +0 -0
  239. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/__init__.py +0 -0
  240. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/adapt_demo.py +0 -0
  241. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/agent_eval.py +0 -0
  242. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  243. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
  244. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_graph_tasks.py +0 -0
  245. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_rule_tasks.py +0 -0
  246. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_trust_tasks.py +0 -0
  247. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  248. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  249. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/cargo_directionality.py +0 -0
  250. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/closed_loop.py +0 -0
  251. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/durability_baselines.py +0 -0
  252. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/experiment_design.py +0 -0
  253. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/forward_hypotheses.py +0 -0
  254. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/generative_design.py +0 -0
  255. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/guide_qc_demo.py +0 -0
  256. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/immune_calibration.py +0 -0
  257. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/intent_specification.py +0 -0
  258. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  259. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  260. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/outcome_calibration.py +0 -0
  261. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/outcome_prediction.py +0 -0
  262. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/paper3_benchmark.py +0 -0
  263. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/paper4_real_validation.py +0 -0
  264. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/paper4_validation.py +0 -0
  265. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/protocol_safety.py +0 -0
  266. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/safety_screening.py +0 -0
  267. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/selective_prediction.py +0 -0
  268. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/seq_vs_measured.py +0 -0
  269. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/target_site_controls.py +0 -0
  270. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/uncertainty_eval.py +0 -0
  271. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/ungrounded_baseline.py +0 -0
  272. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/within_locus_ranking.py +0 -0
  273. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/validate/writer_recovery.py +0 -0
  274. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/verify/__init__.py +0 -0
  275. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/verify/schema.py +0 -0
  276. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/verify/service.py +0 -0
  277. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/__init__.py +0 -0
  278. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/chromatin_seq.py +0 -0
  279. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/durability.py +0 -0
  280. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/export_tracks.py +0 -0
  281. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/features.py +0 -0
  282. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/gsh_baseline.py +0 -0
  283. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/mesh_features.py +0 -0
  284. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/ood.py +0 -0
  285. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/providers.py +0 -0
  286. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/safety.py +0 -0
  287. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/structure3d.py +0 -0
  288. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/uncertainty.py +0 -0
  289. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack/wgenome/writability.py +0 -0
  290. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/dependency_links.txt +0 -0
  291. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/entry_points.txt +0 -0
  292. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/requires.txt +0 -0
  293. {pen_stack-5.12.0 → pen_stack-6.0.0}/pen_stack.egg-info/top_level.txt +0 -0
  294. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_phase0.json +0 -0
  295. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  296. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_phase2.json +0 -0
  297. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_phase3.json +0 -0
  298. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_a.json +0 -0
  299. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_acq.json +0 -0
  300. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
  301. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
  302. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  303. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_b.json +0 -0
  304. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  305. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  306. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  307. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  308. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_c.json +0 -0
  309. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  310. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_calib.json +0 -0
  311. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_cite.json +0 -0
  312. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_continual.json +0 -0
  313. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_crit.json +0 -0
  314. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  315. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_d.json +0 -0
  316. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_drift.json +0 -0
  317. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_e.json +0 -0
  318. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_env.json +0 -0
  319. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  320. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
  321. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_f.json +0 -0
  322. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_g.json +0 -0
  323. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_gen.json +0 -0
  324. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
  325. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  326. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_h.json +0 -0
  327. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_immune.json +0 -0
  328. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
  329. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_innate.json +0 -0
  330. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_loop.json +0 -0
  331. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  332. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_mech.json +0 -0
  333. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  334. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_o.json +0 -0
  335. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_orch.json +0 -0
  336. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
  337. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
  338. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_peg.json +0 -0
  339. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_plan.json +0 -0
  340. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_policy.json +0 -0
  341. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_profile.json +0 -0
  342. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_proto.json +0 -0
  343. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_r.json +0 -0
  344. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
  345. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_route.json +0 -0
  346. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_screen.json +0 -0
  347. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
  348. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
  349. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
  350. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  351. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_v.json +0 -0
  352. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
  353. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  354. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/paper1.yaml +0 -0
  355. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/paper2.yaml +0 -0
  356. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/paper3.yaml +0 -0
  357. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/paper4.yaml +0 -0
  358. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/phase0.yaml +0 -0
  359. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_a.yaml +0 -0
  360. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_acq.yaml +0 -0
  361. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_aldesign.yaml +0 -0
  362. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_alvalidate.yaml +0 -0
  363. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_atlas.yaml +0 -0
  364. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_b.yaml +0 -0
  365. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ba.yaml +0 -0
  366. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ba_v33.yaml +0 -0
  367. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ba_v45.yaml +0 -0
  368. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_bench.yaml +0 -0
  369. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_c.yaml +0 -0
  370. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_cal.yaml +0 -0
  371. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_calib.yaml +0 -0
  372. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_cite.yaml +0 -0
  373. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_continual.yaml +0 -0
  374. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_crit.yaml +0 -0
  375. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ct.yaml +0 -0
  376. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_d.yaml +0 -0
  377. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_drift.yaml +0 -0
  378. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_e.yaml +0 -0
  379. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_env.yaml +0 -0
  380. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ep.yaml +0 -0
  381. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_epitope.yaml +0 -0
  382. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_f.yaml +0 -0
  383. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_g.yaml +0 -0
  384. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_gen.yaml +0 -0
  385. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_genotox.yaml +0 -0
  386. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_graph.yaml +0 -0
  387. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_h.yaml +0 -0
  388. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_immune.yaml +0 -0
  389. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_ingest.yaml +0 -0
  390. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_innate.yaml +0 -0
  391. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_loop.yaml +0 -0
  392. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_mc.yaml +0 -0
  393. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_mech.yaml +0 -0
  394. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_mon.yaml +0 -0
  395. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_o.yaml +0 -0
  396. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_orch.yaml +0 -0
  397. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_outcome.yaml +0 -0
  398. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_pareto.yaml +0 -0
  399. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_peg.yaml +0 -0
  400. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_plan.yaml +0 -0
  401. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_policy.yaml +0 -0
  402. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_profile.yaml +0 -0
  403. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_proto.yaml +0 -0
  404. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_r.yaml +0 -0
  405. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_redteam.yaml +0 -0
  406. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_route.yaml +0 -0
  407. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_screen.yaml +0 -0
  408. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_seroprev.yaml +0 -0
  409. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_simlab.yaml +0 -0
  410. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_twincal.yaml +0 -0
  411. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_uq.yaml +0 -0
  412. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_v.yaml +0 -0
  413. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_vcell.yaml +0 -0
  414. {pen_stack-5.12.0 → pen_stack-6.0.0}/prereg/ws_wv.yaml +0 -0
  415. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_build_atlas.py +0 -0
  416. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_build_durability.py +0 -0
  417. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_export_tracks.py +0 -0
  418. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_safety_concordance.py +0 -0
  419. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_train_safety.py +0 -0
  420. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p1_validation_report.py +0 -0
  421. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p2_build_atlas.py +0 -0
  422. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p3_benchmark_report.py +0 -0
  423. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p4_genome_scan.py +0 -0
  424. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p52_build_genotox_oracle.py +0 -0
  425. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/p53_build_epitope_oracle.py +0 -0
  426. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/ws_b_report.py +0 -0
  427. {pen_stack-5.12.0 → pen_stack-6.0.0}/scripts/ws_c_report.py +0 -0
  428. {pen_stack-5.12.0 → pen_stack-6.0.0}/setup.cfg +0 -0
@@ -3,6 +3,56 @@
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
+ ## [6.0.0] - 2026-06-11 - 1.0 — First Stable (the graduation)
7
+
8
+ **The Closed-Loop arc is complete (7/7), and PEN-STACK graduates to "1.0 — First Stable."** The public API
9
+ exercised across every surface — verify, safety, generative design, twin, experiment design, build interface,
10
+ closed loop, co-scientist, and the Genome-Writing Challenge — is documented and **frozen** with a deprecation
11
+ policy. "First Stable" is **earned, not declared**: it is cut only after the closed loop is demonstrated (v5.12),
12
+ the benchmark is public (v5.13), and the integration surface ships.
13
+
14
+ ### Changed
15
+ - **`Development Status :: 5 - Production/Stable`** (was Beta). Version **6.0.0** (MAJOR).
16
+ - The public API is documented + frozen with a deprecation policy: **`docs/STABILITY.md`** (semver from 6.0.0;
17
+ deprecations warn ≥1 MINOR before removal in a MAJOR; the `OracleResult`/`Verdict`/`SafetyVerdict`/immune-profile
18
+ contracts and invariants — incl. `collapsed_score is None` and the no-fabrication guard — are stable across 6.x).
19
+ - The Genome-Writing Challenge is **public**.
20
+
21
+ ### Notes
22
+ - "1.0 — First Stable" is a commitment to **API stability**, **not** a claim of solving genetic engineering. The
23
+ unknown funnel remains — made legible (scope flags, known-unknowns, honest baselines, no fabrication), not
24
+ hidden. The high version numbers of the program's fast youth finally meet a real stability commitment.
25
+
26
+ ## [5.13.0] - 2026-06-11 - v5.13 release: The Standard (Genome-Writing Challenge + Co-Scientist II)
27
+
28
+ **Closed-Loop arc, Cycle 7 of 7.** Make PEN-STACK the field's reference — an open, recurring, held-out benchmark
29
+ others build to — and give scientists a co-scientist that drives the whole loop with immune-risk first-class.
30
+ Workstreams WS-{CHALLENGE,COSCI2,ADOPT}, SHA-locked. (The v6.0.0 "1.0 — First Stable" graduation follows.)
31
+
32
+ ### Added
33
+ - **WS-CHALLENGE** — `benchmarks/genome_writing_challenge/`: the **Genome-Writing Challenge** — an open,
34
+ recurring, **held-out** leaderboard (the CASP / Virtual-Cell-Challenge model). `evaluate(Submission, round_id)`
35
+ scores an external `predict_fn(public_input) -> answer` on a held-out round whose labels it never sees; labels
36
+ are computed by the validated PEN-STACK layers (rules / v5.7 Guardian / v5.6 immune profile) so **no task uses a
37
+ circular label**; a **no-fabrication** audit runs on every submission; task families include an **immune-risk**
38
+ task grounded in the v5.6 oracles. One-command runner (`run.py`); a reference submission anchors the leaderboard.
39
+ - **WS-COSCI2** — `pen_stack/agent/co_scientist.py::co_scientist_session(goal, cell_state)`: the matured
40
+ co-scientist **drives the whole loop** — safe + legal + calibrated designs → predicted outcomes → suggested
41
+ experiments → exportable protocols — returning the Pareto **strategies**, calibrated **predicted_outcomes**,
42
+ per-axis **immune_profiles (first-class)**, **suggested_experiments**, **citations** (resolve by construction),
43
+ a complete **scope_ledger**, and the per-design **safety** decision. The scientist/lab decides; the co-scientist
44
+ drives. No number is fabricated; hazardous candidates are discarded.
45
+ - **WS-ADOPT** — the integration surface: MCP server tools, the Challenge submission API, and a worked reference
46
+ example (`docs/integrations.md`). The standing adoption criterion (≥1 external integration + ≥1 external
47
+ submission) depends on outreach — the honest non-code bottleneck flagged since v3.1; the surface is shipped.
48
+ - Docs: `docs/{challenge,co_scientist_loop,integrations}.md`; prereg `ws_{challenge,cosci2}` + SHA locks; deposit
49
+ `phase_5.13/`.
50
+
51
+ ### Notes
52
+ - A standard requires a community: PEN-STACK provides the open, reproducible, held-out benchmark and the
53
+ integration surface; adoption depends on outreach. The co-scientist **drives and presents** (incl. the
54
+ immune-risk profile with its known-unknowns) — the scientist and lab decide.
55
+
6
56
  ## [5.12.0] - 2026-06-11 - v5.12 release: The Closed Loop (autonomy Level 3)
7
57
 
8
58
  **Closed-Loop arc, Cycle 6 of 7.** Integrate everything into one continual design→build→test→learn cycle —
@@ -1,7 +1,7 @@
1
1
  cff-version: 1.2.0
2
2
  message: "If you use PEN-STACK, please cite it as below."
3
3
  title: "PEN-STACK: open infrastructure for genome writing"
4
- version: 5.12.0
4
+ version: 6.0.0
5
5
  date-released: 2026-06-11
6
6
  authors:
7
7
  - family-names: "Mahaboob Ali"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 5.12.0
3
+ Version: 6.0.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
@@ -11,7 +11,7 @@ Project-URL: Changelog, https://github.com/ahmedanees-m/pen-stack/blob/main/CHAN
11
11
  Project-URL: Issues, https://github.com/ahmedanees-m/pen-stack/issues
12
12
  Project-URL: Benchmark, https://github.com/ahmedanees-m/pen-stack/tree/main/benchmarks/genome_writing_bench
13
13
  Keywords: genome-writing,genome-editing,bridge-recombinase,safe-harbor,writable-genome,writer-atlas,write-planner,bioinformatics
14
- Classifier: Development Status :: 4 - Beta
14
+ Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
@@ -90,8 +90,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
90
90
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
91
91
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
92
92
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
93
- [![Version](https://img.shields.io/badge/version-5.12.0-blue.svg)](CHANGELOG.md)
94
- [![Tests](https://img.shields.io/badge/tests-346%20passing-success.svg)](tests/)
93
+ [![Version](https://img.shields.io/badge/version-6.0.0-blue.svg)](CHANGELOG.md)
94
+ [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
95
+ [![Tests](https://img.shields.io/badge/tests-354%20passing-success.svg)](tests/)
95
96
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
96
97
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
97
98
  [![Validation: pre-registered](https://img.shields.io/badge/validation-pre--registered-critical.svg)](prereg/)
@@ -134,6 +135,37 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
134
135
  Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
135
136
  a pre-registered, honest baseline before release.
136
137
 
138
+ ## 🎓 v6.0.0 — "1.0 — First Stable"
139
+
140
+ The **Closed-Loop arc is complete (7/7)** and PEN-STACK has graduated to **1.0 — First Stable**. The public API
141
+ exercised across every surface — `verify`, `safety`, generative `design`, the `twin`, `active` experiment design,
142
+ the `build` interface, the closed `loop`, the `co_scientist`, and the **Genome-Writing Challenge** — is documented
143
+ and **frozen** with a deprecation policy ([`docs/STABILITY.md`](docs/STABILITY.md)). `Development Status ::
144
+ 5 - Production/Stable`. "First Stable" is **earned, not declared** — cut only after the closed loop was
145
+ demonstrated (v5.12) and the benchmark went public (v5.13).
146
+
147
+ > "1.0 — First Stable" is a commitment to **API stability**, not a claim of solving genetic engineering. The
148
+ > unknown funnel remains — made legible (scope flags, known-unknowns, honest baselines, no fabrication), not
149
+ > hidden.
150
+
151
+ ## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
152
+
153
+ v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
154
+ accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
155
+ benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
156
+ safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
157
+
158
+ | Workstream | What it adds | Result |
159
+ |---|---|---|
160
+ | **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) |
161
+ | **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 |
162
+ | **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
163
+
164
+ `python benchmarks/genome_writing_challenge/run.py` scores the reference. See
165
+ [`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
166
+ [`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
167
+ Stable" follows.)**
168
+
137
169
  ## What is new in v5.12 — The Closed Loop (autonomy Level 3)
138
170
 
139
171
  v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
@@ -667,7 +699,7 @@ pen-stack/
667
699
  │ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
668
700
  │ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
669
701
  │ │ + 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)
702
+ │ ├── 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
703
  │ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
672
704
  │ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
673
705
  │ ├── 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 +732,7 @@ pen-stack/
700
732
  │ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
701
733
  │ └── cli.py unified CLI
702
734
  ├── 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)
735
+ ├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
703
736
  ├── bench/run.py one-command bench entrypoint (--agent, --verify)
704
737
  ├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
705
738
  ├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
@@ -712,7 +745,7 @@ pen-stack/
712
745
  │ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
713
746
  │ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
714
747
  │ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
715
- │ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
748
+ │ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
716
749
  ├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
717
750
  │ v3.2 bridge_offtarget_energetics.json)
718
751
  ├── data/llm_bench_cache/ 28 cached ungrounded-LLM transcripts (T7, offline/CI replay)
@@ -15,8 +15,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
15
15
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
16
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
17
17
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
18
- [![Version](https://img.shields.io/badge/version-5.12.0-blue.svg)](CHANGELOG.md)
19
- [![Tests](https://img.shields.io/badge/tests-346%20passing-success.svg)](tests/)
18
+ [![Version](https://img.shields.io/badge/version-6.0.0-blue.svg)](CHANGELOG.md)
19
+ [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
20
+ [![Tests](https://img.shields.io/badge/tests-354%20passing-success.svg)](tests/)
20
21
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
21
22
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
22
23
  [![Validation: pre-registered](https://img.shields.io/badge/validation-pre--registered-critical.svg)](prereg/)
@@ -59,6 +60,37 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
59
60
  Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
60
61
  a pre-registered, honest baseline before release.
61
62
 
63
+ ## 🎓 v6.0.0 — "1.0 — First Stable"
64
+
65
+ The **Closed-Loop arc is complete (7/7)** and PEN-STACK has graduated to **1.0 — First Stable**. The public API
66
+ exercised across every surface — `verify`, `safety`, generative `design`, the `twin`, `active` experiment design,
67
+ the `build` interface, the closed `loop`, the `co_scientist`, and the **Genome-Writing Challenge** — is documented
68
+ and **frozen** with a deprecation policy ([`docs/STABILITY.md`](docs/STABILITY.md)). `Development Status ::
69
+ 5 - Production/Stable`. "First Stable" is **earned, not declared** — cut only after the closed loop was
70
+ demonstrated (v5.12) and the benchmark went public (v5.13).
71
+
72
+ > "1.0 — First Stable" is a commitment to **API stability**, not a claim of solving genetic engineering. The
73
+ > unknown funnel remains — made legible (scope flags, known-unknowns, honest baselines, no fabrication), not
74
+ > hidden.
75
+
76
+ ## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
77
+
78
+ v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
79
+ accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
80
+ benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
81
+ safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
82
+
83
+ | Workstream | What it adds | Result |
84
+ |---|---|---|
85
+ | **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) |
86
+ | **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 |
87
+ | **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
88
+
89
+ `python benchmarks/genome_writing_challenge/run.py` scores the reference. See
90
+ [`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
91
+ [`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
92
+ Stable" follows.)**
93
+
62
94
  ## What is new in v5.12 — The Closed Loop (autonomy Level 3)
63
95
 
64
96
  v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
@@ -592,7 +624,7 @@ pen-stack/
592
624
  │ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
593
625
  │ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
594
626
  │ │ + 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)
627
+ │ ├── 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
628
  │ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
597
629
  │ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
598
630
  │ ├── 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 +657,7 @@ pen-stack/
625
657
  │ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
626
658
  │ └── cli.py unified CLI
627
659
  ├── 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)
660
+ ├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
628
661
  ├── bench/run.py one-command bench entrypoint (--agent, --verify)
629
662
  ├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
630
663
  ├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
@@ -637,7 +670,7 @@ pen-stack/
637
670
  │ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
638
671
  │ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
639
672
  │ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
640
- │ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
673
+ │ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
641
674
  ├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
642
675
  │ v3.2 bridge_offtarget_energetics.json)
643
676
  ├── 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,51 @@
1
+ # API stability & deprecation policy (v6.0.0 — "1.0 — First Stable")
2
+
3
+ At **v6.0.0**, PEN-STACK graduates to **1.0 — First Stable**: the public API exercised across all surfaces is
4
+ documented and frozen, with a deprecation policy. "First Stable" is **earned, not declared** — it is cut only
5
+ after the closed loop is demonstrated (v5.12), the benchmark is public (v5.13), and the integration surface ships.
6
+
7
+ > "1.0 — First Stable" is a commitment to **API stability**, not a claim of solving genetic engineering. The
8
+ > unknown funnel remains — made legible (scope flags, known-unknowns, honest baselines), not hidden.
9
+
10
+ ## Versioning
11
+
12
+ PEN-STACK follows **semantic versioning** from 6.0.0:
13
+
14
+ - **MAJOR** (`x.0.0`) — backward-incompatible changes to the public API (below).
15
+ - **MINOR** (`6.x.0`) — backward-compatible additions.
16
+ - **PATCH** (`6.0.x`) — backward-compatible fixes.
17
+
18
+ ## The public API (frozen at 1.0)
19
+
20
+ These are the supported entry points. Their **signatures and return-shape keys** are stable across 6.x:
21
+
22
+ | Surface | Entry point |
23
+ |---|---|
24
+ | Verify a write | `pen_stack.verify.verify(design, question=None, *, actor=…) -> Verdict` (legal · safety · immune_profile · confidence · scope) |
25
+ | Safety gate | `pen_stack.safety.safety_gate(design, *, actor=…) -> SafetyVerdict` |
26
+ | Generative design | `pen_stack.design.generate_designs(...)`, `pen_stack.design.pareto_front(...)` |
27
+ | Digital twin | `pen_stack.twin.predict_outcome(design, cell_state)`, `pen_stack.twin.calibrate_outcome(...)` |
28
+ | Experiment design | `pen_stack.active.select_batch(...)`, `pen_stack.active.expected_information_gain(...)` |
29
+ | Build interface | `pen_stack.build.export_protocol(...)`, `pen_stack.build.ingest_result(...)`, `pen_stack.build.run_simulated(...)` |
30
+ | Closed loop | `pen_stack.loop.run_loop(goal, cell_state, …)` |
31
+ | Co-scientist | `pen_stack.agent.co_scientist.co_scientist_session(goal, cell_state)` |
32
+ | Challenge | `benchmarks.genome_writing_challenge.harness.evaluate(submission, round_id)` |
33
+ | CLI / MCP | `pen-stack` / `pen-bridge` console scripts; `pen_stack.agent.mcp_server` |
34
+
35
+ Internal helpers (underscore-prefixed names, modules under `pen_stack/*/_*`, the `data/`/`wgenome/` training
36
+ pipelines) are **not** part of the public API and may change in any release.
37
+
38
+ ## Deprecation policy
39
+
40
+ - A public API element is deprecated by a **`DeprecationWarning`** and a CHANGELOG note **at least one MINOR
41
+ release** before removal.
42
+ - Removal happens only in a **MAJOR** release.
43
+ - The `OracleResult` / `Verdict` / `SafetyVerdict` / immune-profile **contracts** (field names + invariants such as
44
+ `collapsed_score is None` and the no-fabrication guard) are stable across 6.x.
45
+
46
+ ## What stability does NOT promise
47
+
48
+ - Model **numbers** may change as oracles / data are updated (they are version-pinned + provenanced; results are
49
+ reproducible *given a pinned version*, not constant forever).
50
+ - **Scope** stays honest: out-of-scope questions are deferred, known-unknowns declared, baselines reported — at
51
+ 1.0 and beyond.
@@ -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.12.0"
2
+ __version__ = "6.0.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.12.0
3
+ Version: 6.0.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
@@ -11,7 +11,7 @@ Project-URL: Changelog, https://github.com/ahmedanees-m/pen-stack/blob/main/CHAN
11
11
  Project-URL: Issues, https://github.com/ahmedanees-m/pen-stack/issues
12
12
  Project-URL: Benchmark, https://github.com/ahmedanees-m/pen-stack/tree/main/benchmarks/genome_writing_bench
13
13
  Keywords: genome-writing,genome-editing,bridge-recombinase,safe-harbor,writable-genome,writer-atlas,write-planner,bioinformatics
14
- Classifier: Development Status :: 4 - Beta
14
+ Classifier: Development Status :: 5 - Production/Stable
15
15
  Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
@@ -90,8 +90,9 @@ every design against rule-grounded mechanism, reports calibrated confidence, cit
90
90
  [![codecov](https://codecov.io/gh/ahmedanees-m/pen-stack/branch/main/graph/badge.svg)](https://codecov.io/gh/ahmedanees-m/pen-stack)
91
91
  [![License: MIT](https://img.shields.io/badge/License-MIT-informational.svg)](LICENSE)
92
92
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
93
- [![Version](https://img.shields.io/badge/version-5.12.0-blue.svg)](CHANGELOG.md)
94
- [![Tests](https://img.shields.io/badge/tests-346%20passing-success.svg)](tests/)
93
+ [![Version](https://img.shields.io/badge/version-6.0.0-blue.svg)](CHANGELOG.md)
94
+ [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
95
+ [![Tests](https://img.shields.io/badge/tests-354%20passing-success.svg)](tests/)
95
96
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
96
97
  [![Runtime: Docker](https://img.shields.io/badge/runtime-docker-2496ED.svg)](docker/)
97
98
  [![Validation: pre-registered](https://img.shields.io/badge/validation-pre--registered-critical.svg)](prereg/)
@@ -134,6 +135,37 @@ Two questions gate every genome-writing project, and before PEN-STACK no resourc
134
135
  Everything is built on bulk-downloadable public data, runs on a single GPU, and is validated **blind** against
135
136
  a pre-registered, honest baseline before release.
136
137
 
138
+ ## 🎓 v6.0.0 — "1.0 — First Stable"
139
+
140
+ The **Closed-Loop arc is complete (7/7)** and PEN-STACK has graduated to **1.0 — First Stable**. The public API
141
+ exercised across every surface — `verify`, `safety`, generative `design`, the `twin`, `active` experiment design,
142
+ the `build` interface, the closed `loop`, the `co_scientist`, and the **Genome-Writing Challenge** — is documented
143
+ and **frozen** with a deprecation policy ([`docs/STABILITY.md`](docs/STABILITY.md)). `Development Status ::
144
+ 5 - Production/Stable`. "First Stable" is **earned, not declared** — cut only after the closed loop was
145
+ demonstrated (v5.12) and the benchmark went public (v5.13).
146
+
147
+ > "1.0 — First Stable" is a commitment to **API stability**, not a claim of solving genetic engineering. The
148
+ > unknown funnel remains — made legible (scope flags, known-unknowns, honest baselines, no fabrication), not
149
+ > hidden.
150
+
151
+ ## What is new in v5.13 — The Standard (Genome-Writing Challenge + Co-Scientist II)
152
+
153
+ v5.13 (**Closed-Loop arc, Cycle 7 of 7**) makes PEN-STACK the field's reference and its most useful face: the
154
+ accumulated bench tasks become the **Genome-Writing Challenge** — an open, recurring, held-out, reproducible
155
+ benchmark others build *to* — while a **co-scientist drives the whole loop** for a working scientist, every output
156
+ safe, legal, calibrated, cited, scope-ledgered, and immune-profiled.
157
+
158
+ | Workstream | What it adds | Result |
159
+ |---|---|---|
160
+ | **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) |
161
+ | **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 |
162
+ | **ADOPT** | MCP + submission API + worked example (`docs/integrations.md`) | the integration surface is shipped; ≥1 external integration/submission depends on outreach (honest bottleneck) |
163
+
164
+ `python benchmarks/genome_writing_challenge/run.py` scores the reference. See
165
+ [`docs/challenge.md`](docs/challenge.md), [`docs/co_scientist_loop.md`](docs/co_scientist_loop.md),
166
+ [`docs/integrations.md`](docs/integrations.md), and `prereg/ws_{challenge,cosci2}.yaml`. **(v6.0.0 "1.0 — First
167
+ Stable" follows.)**
168
+
137
169
  ## What is new in v5.12 — The Closed Loop (autonomy Level 3)
138
170
 
139
171
  v5.12 (**Closed-Loop arc, Cycle 6 of 7**) integrates every prior cycle into one continual **design→build→test→learn**
@@ -667,7 +699,7 @@ pen-stack/
667
699
  │ │ + v5.6 immune_profile (unified per-axis immune-risk vector; never collapsed)
668
700
  │ ├── bridge/ bridge off-target engine (Paper 4): offtarget / fold_qc / guide_qc / pipeline / cli
669
701
  │ │ + 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)
702
+ │ ├── 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
703
  │ │ + v3.2 epistemic (3-tier status) / scope (known-unknowns matcher)
672
704
  │ ├── graph/ v4.5 living world-model knowledge graph (schema/build/query/ingest/cell_types); typed provenanced edges; gated living loop (propose-only)
673
705
  │ ├── 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 +732,7 @@ pen-stack/
700
732
  │ ├── ui/app.py Streamlit web app (16 pages; v3.2 PEN-Agent shows confidence + epistemic status)
701
733
  │ └── cli.py unified CLI
702
734
  ├── 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)
735
+ ├── benchmarks/genome_writing_challenge/ v5.13 the public Genome-Writing Challenge (held-out rounds + immune-risk task + submission API; harness / run / README / SUBMISSIONS)
703
736
  ├── bench/run.py one-command bench entrypoint (--agent, --verify)
704
737
  ├── scripts/ reproducible pipeline drivers (p1_*, p2_*, p4_*, p52/p53 delivery-immunology oracle builds, ws_*_report)
705
738
  ├── configs/ pinned datasets + thresholds + curation (YAML); v3.2 known_unknowns /
@@ -712,7 +745,7 @@ pen-stack/
712
745
  │ r,v,route,env,bench,cal,o,wv,atlas,graph,mon,ct,plan,crit,cite,immune,
713
746
  │ genotox,epitope,innate,seroprev,peg,calib,profile,screen,policy,redteam,
714
747
  │ gen,pareto,orch,vcell,mech,outcome,twincal,acq,aldesign,alvalidate,
715
- │ proto,ingest,simlab,loop,continual,drift} + SHA256 locks)
748
+ │ proto,ingest,simlab,loop,continual,drift,challenge,cosci2} + SHA256 locks)
716
749
  ├── data/curated/ small committed tables (universe, gene coords, measured bridge profile,
717
750
  │ v3.2 bridge_offtarget_energetics.json)
718
751
  ├── data/llm_bench_cache/ 28 cached ungrounded-LLM transcripts (T7, offline/CI replay)