pen-stack 6.4.0__tar.gz → 6.4.1__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 (452) hide show
  1. {pen_stack-6.4.0 → pen_stack-6.4.1}/PKG-INFO +1 -1
  2. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/__init__.py +1 -1
  3. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/status.py +9 -2
  4. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/llm.py +45 -0
  5. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/PKG-INFO +1 -1
  6. {pen_stack-6.4.0 → pen_stack-6.4.1}/pyproject.toml +1 -1
  7. {pen_stack-6.4.0 → pen_stack-6.4.1}/CHANGELOG.md +0 -0
  8. {pen_stack-6.4.0 → pen_stack-6.4.1}/CITATION.cff +0 -0
  9. {pen_stack-6.4.0 → pen_stack-6.4.1}/LICENSE +0 -0
  10. {pen_stack-6.4.0 → pen_stack-6.4.1}/MANIFEST.in +0 -0
  11. {pen_stack-6.4.0 → pen_stack-6.4.1}/README.md +0 -0
  12. {pen_stack-6.4.0 → pen_stack-6.4.1}/bench/run.py +0 -0
  13. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  14. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_bench/README.md +0 -0
  15. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  16. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  17. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  18. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_challenge/README.md +0 -0
  19. {pen_stack-6.4.0 → pen_stack-6.4.1}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
  20. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/antipeg.yaml +0 -0
  21. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/atlas_families.yaml +0 -0
  22. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/bridge_offtarget_profile.yaml +0 -0
  23. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/capsid_epitope_oracle.yaml +0 -0
  24. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/capsid_sequences.fasta +0 -0
  25. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/cargo_polish.yaml +0 -0
  26. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/cell_types.yaml +0 -0
  27. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/datasets.yaml +0 -0
  28. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/delivery_constraints.yaml +0 -0
  29. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/delivery_rules.yaml +0 -0
  30. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/delivery_vehicles.yaml +0 -0
  31. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/gates_v3.yaml +0 -0
  32. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/genotoxicity_oracle.yaml +0 -0
  33. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/gsh_validated_heldout.yaml +0 -0
  34. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/intent_weights.yaml +0 -0
  35. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/known_unknowns.yaml +0 -0
  36. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/llm.yaml +0 -0
  37. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/metric_guide.yaml +0 -0
  38. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/monitor_queries.yaml +0 -0
  39. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/oracles/execution.yaml +0 -0
  40. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/oracles/scope_cards.yaml +0 -0
  41. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/rules/delivery.yaml +0 -0
  42. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/rules/fold.yaml +0 -0
  43. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/rules/multiplex.yaml +0 -0
  44. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/rules/payload.yaml +0 -0
  45. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/rules/reachability.yaml +0 -0
  46. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/safety/hazard_registry.yaml +0 -0
  47. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/safety/policy.yaml +0 -0
  48. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/safety/probes.yaml +0 -0
  49. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/score_axes.yaml +0 -0
  50. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/seroprevalence.yaml +0 -0
  51. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/target_sites.yaml +0 -0
  52. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/universe_crosswalk.yaml +0 -0
  53. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/write_types.yaml +0 -0
  54. {pen_stack-6.4.0 → pen_stack-6.4.1}/configs/wtkb_curated.yaml +0 -0
  55. {pen_stack-6.4.0 → pen_stack-6.4.1}/data/curated/bridge_offtarget_energetics.json +0 -0
  56. {pen_stack-6.4.0 → pen_stack-6.4.1}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  57. {pen_stack-6.4.0 → pen_stack-6.4.1}/data/curated/gene_coords.parquet +0 -0
  58. {pen_stack-6.4.0 → pen_stack-6.4.1}/data/curated/unified_editor_universe.parquet +0 -0
  59. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/BACKLOG.md +0 -0
  60. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/DEPLOY.md +0 -0
  61. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/INFRA.md +0 -0
  62. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/MCP.md +0 -0
  63. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/RELEASING.md +0 -0
  64. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/REPRO.md +0 -0
  65. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/STABILITY.md +0 -0
  66. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/agent.md +0 -0
  67. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/alphagenome_feasibility.md +0 -0
  68. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/autonomy.md +0 -0
  69. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/benchmark_circularity.md +0 -0
  70. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/biosecurity.md +0 -0
  71. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/build_interface.md +0 -0
  72. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/cards/atlas.md +0 -0
  73. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/cards/durability.md +0 -0
  74. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/cards/safety.md +0 -0
  75. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/challenge.md +0 -0
  76. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/closed_loop.md +0 -0
  77. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/co_scientist.md +0 -0
  78. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/co_scientist_loop.md +0 -0
  79. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/delivery.md +0 -0
  80. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/delivery_immunology.md +0 -0
  81. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/digital_twin.md +0 -0
  82. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/dissemination.md +0 -0
  83. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/environment.md +0 -0
  84. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/experiment_design.md +0 -0
  85. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/generative_design.md +0 -0
  86. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/index.md +0 -0
  87. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/integrations.md +0 -0
  88. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/live_oracles.md +0 -0
  89. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/mechanistic_constraints.md +0 -0
  90. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/oracles.md +0 -0
  91. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/positioning.md +0 -0
  92. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/private_data_formats.md +0 -0
  93. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/quickstart.md +0 -0
  94. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/responsible_use.md +0 -0
  95. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/rules.md +0 -0
  96. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/scope.md +0 -0
  97. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/scorecard.md +0 -0
  98. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/tutorials/compare-families.md +0 -0
  99. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/tutorials/score-deliverability.md +0 -0
  100. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/tutorials/where-can-i-write.md +0 -0
  101. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  102. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/uncertainty.md +0 -0
  103. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/verify.md +0 -0
  104. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/world_model.md +0 -0
  105. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/writer_verification.md +0 -0
  106. {pen_stack-6.4.0 → pen_stack-6.4.1}/docs/wtkb.md +0 -0
  107. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/_resources.py +0 -0
  108. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/active/__init__.py +0 -0
  109. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/active/acquire.py +0 -0
  110. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/active/design.py +0 -0
  111. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/active/validate.py +0 -0
  112. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/__init__.py +0 -0
  113. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/finetune.py +0 -0
  114. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/ingest.py +0 -0
  115. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/pipeline.py +0 -0
  116. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/recalibrate.py +0 -0
  117. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/adapt/report.py +0 -0
  118. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/__init__.py +0 -0
  119. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/cite.py +0 -0
  120. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/co_scientist.py +0 -0
  121. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/epistemic.py +0 -0
  122. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/guardrails.py +0 -0
  123. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/mcp_server.py +0 -0
  124. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/orchestrator.py +0 -0
  125. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/orchestrator_live.py +0 -0
  126. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/pen_agent.py +0 -0
  127. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/scope.py +0 -0
  128. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/agent/tools.py +0 -0
  129. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/api/__init__.py +0 -0
  130. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/api/manifest.py +0 -0
  131. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/__init__.py +0 -0
  132. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/build_wtkb.py +0 -0
  133. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/crosslink.py +0 -0
  134. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/expand.py +0 -0
  135. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/schema.py +0 -0
  136. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/scorecard.py +0 -0
  137. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/universe.py +0 -0
  138. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/variant_propose.py +0 -0
  139. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/atlas/writer_verify.py +0 -0
  140. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/__init__.py +0 -0
  141. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/activity.py +0 -0
  142. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/cli.py +0 -0
  143. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/fold_qc.py +0 -0
  144. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/guide_qc.py +0 -0
  145. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/ingest.py +0 -0
  146. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/offtarget.py +0 -0
  147. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/offtarget_energetics.py +0 -0
  148. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/ortholog_screen.py +0 -0
  149. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/bridge/pipeline.py +0 -0
  150. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/build/__init__.py +0 -0
  151. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/build/ingest.py +0 -0
  152. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/build/protocol.py +0 -0
  153. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/build/simlab.py +0 -0
  154. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/cli.py +0 -0
  155. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/__init__.py +0 -0
  156. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/encode.py +0 -0
  157. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/genome.py +0 -0
  158. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/ingest_chromatin.py +0 -0
  159. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/ingest_integration.py +0 -0
  160. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/ingest_safety_annot.py +0 -0
  161. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/data/ingest_trip.py +0 -0
  162. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/design/__init__.py +0 -0
  163. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/design/generate.py +0 -0
  164. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/design/pareto.py +0 -0
  165. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/design/space.py +0 -0
  166. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/env/__init__.py +0 -0
  167. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/env/genome_writing_env.py +0 -0
  168. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/env/policies.py +0 -0
  169. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/__init__.py +0 -0
  170. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/build.py +0 -0
  171. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/cell_types.py +0 -0
  172. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/ingest.py +0 -0
  173. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/query.py +0 -0
  174. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/graph/schema.py +0 -0
  175. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/loop/__init__.py +0 -0
  176. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/loop/continual.py +0 -0
  177. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/loop/cycle.py +0 -0
  178. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/loop/drift.py +0 -0
  179. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/mech/__init__.py +0 -0
  180. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/mech/classify_atlas.py +0 -0
  181. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/mech/whitelist.py +0 -0
  182. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/monitor/__init__.py +0 -0
  183. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/monitor/europepmc.py +0 -0
  184. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/monitor/run.py +0 -0
  185. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/monitor/triage.py +0 -0
  186. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/__init__.py +0 -0
  187. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/cache.py +0 -0
  188. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/energetics.py +0 -0
  189. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/genome.py +0 -0
  190. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/protein_design.py +0 -0
  191. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/rna.py +0 -0
  192. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/schema.py +0 -0
  193. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/structure.py +0 -0
  194. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/oracles/vcell.py +0 -0
  195. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/__init__.py +0 -0
  196. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/antipeg_oracle.py +0 -0
  197. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
  198. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/cargo.py +0 -0
  199. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/cargo_polish.py +0 -0
  200. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/delivery.py +0 -0
  201. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/delivery_constraints.py +0 -0
  202. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/delivery_immunology.py +0 -0
  203. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/delivery_vehicles.py +0 -0
  204. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/genotoxicity_oracle.py +0 -0
  205. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/immune_profile.py +0 -0
  206. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/innate_sensing.py +0 -0
  207. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/multiplex.py +0 -0
  208. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/optimize.py +0 -0
  209. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/pipeline.py +0 -0
  210. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/report.py +0 -0
  211. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/router.py +0 -0
  212. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/seroprevalence_oracle.py +0 -0
  213. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/planner/target_site.py +0 -0
  214. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rag/__init__.py +0 -0
  215. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rag/index.py +0 -0
  216. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rag/llm.py +0 -0
  217. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rag/qa.py +0 -0
  218. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rules/__init__.py +0 -0
  219. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rules/evaluators.py +0 -0
  220. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rules/loader.py +0 -0
  221. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rules/schema.py +0 -0
  222. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/rules/solver.py +0 -0
  223. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/__init__.py +0 -0
  224. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/audit.py +0 -0
  225. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/gate.py +0 -0
  226. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/policy.py +0 -0
  227. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/redteam.py +0 -0
  228. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/registry.py +0 -0
  229. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/safety/screen.py +0 -0
  230. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/score/__init__.py +0 -0
  231. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/score/recalibrate.py +0 -0
  232. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/score/therapeutic.py +0 -0
  233. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/server/__init__.py +0 -0
  234. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/server/api.py +0 -0
  235. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/twin/__init__.py +0 -0
  236. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/twin/calibrate.py +0 -0
  237. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/twin/mechanistic.py +0 -0
  238. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/twin/outcome.py +0 -0
  239. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/ui/__init__.py +0 -0
  240. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/ui/app.py +0 -0
  241. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/__init__.py +0 -0
  242. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/adapt_demo.py +0 -0
  243. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/agent_eval.py +0 -0
  244. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  245. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
  246. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_graph_tasks.py +0 -0
  247. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_rule_tasks.py +0 -0
  248. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_trust_tasks.py +0 -0
  249. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  250. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  251. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/cargo_directionality.py +0 -0
  252. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/closed_loop.py +0 -0
  253. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/durability_baselines.py +0 -0
  254. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/experiment_design.py +0 -0
  255. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/forward_hypotheses.py +0 -0
  256. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/generative_design.py +0 -0
  257. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/guide_qc_demo.py +0 -0
  258. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/immune_calibration.py +0 -0
  259. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/intent_specification.py +0 -0
  260. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  261. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  262. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/outcome_calibration.py +0 -0
  263. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/outcome_prediction.py +0 -0
  264. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/paper3_benchmark.py +0 -0
  265. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/paper4_real_validation.py +0 -0
  266. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/paper4_validation.py +0 -0
  267. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/protocol_safety.py +0 -0
  268. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/safety_screening.py +0 -0
  269. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/selective_prediction.py +0 -0
  270. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/seq_vs_measured.py +0 -0
  271. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/target_site_controls.py +0 -0
  272. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/uncertainty_eval.py +0 -0
  273. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/ungrounded_baseline.py +0 -0
  274. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/within_locus_ranking.py +0 -0
  275. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/validate/writer_recovery.py +0 -0
  276. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/verify/__init__.py +0 -0
  277. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/verify/schema.py +0 -0
  278. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/verify/service.py +0 -0
  279. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/__init__.py +0 -0
  280. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/guide.py +0 -0
  281. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/router.py +0 -0
  282. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/server.py +0 -0
  283. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/web/tools.py +0 -0
  284. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/__init__.py +0 -0
  285. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/chromatin_seq.py +0 -0
  286. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/durability.py +0 -0
  287. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/export_tracks.py +0 -0
  288. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/features.py +0 -0
  289. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/gsh_baseline.py +0 -0
  290. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/mesh_features.py +0 -0
  291. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/ood.py +0 -0
  292. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/providers.py +0 -0
  293. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/safety.py +0 -0
  294. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/structure3d.py +0 -0
  295. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/uncertainty.py +0 -0
  296. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack/wgenome/writability.py +0 -0
  297. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/SOURCES.txt +0 -0
  298. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/dependency_links.txt +0 -0
  299. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/entry_points.txt +0 -0
  300. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/requires.txt +0 -0
  301. {pen_stack-6.4.0 → pen_stack-6.4.1}/pen_stack.egg-info/top_level.txt +0 -0
  302. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_phase0.json +0 -0
  303. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  304. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_phase2.json +0 -0
  305. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_phase3.json +0 -0
  306. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_a.json +0 -0
  307. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_acq.json +0 -0
  308. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
  309. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
  310. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  311. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_b.json +0 -0
  312. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  313. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  314. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  315. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  316. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_c.json +0 -0
  317. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  318. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_calib.json +0 -0
  319. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
  320. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_chat.json +0 -0
  321. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_cite.json +0 -0
  322. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_continual.json +0 -0
  323. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
  324. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_crit.json +0 -0
  325. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  326. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_d.json +0 -0
  327. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_drift.json +0 -0
  328. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_e.json +0 -0
  329. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_env.json +0 -0
  330. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  331. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
  332. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_f.json +0 -0
  333. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
  334. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_g.json +0 -0
  335. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_gen.json +0 -0
  336. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
  337. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  338. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_h.json +0 -0
  339. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_hybrid.json +0 -0
  340. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_immune.json +0 -0
  341. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
  342. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_innate.json +0 -0
  343. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_loop.json +0 -0
  344. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
  345. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  346. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
  347. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_mech.json +0 -0
  348. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  349. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_o.json +0 -0
  350. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
  351. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_orch.json +0 -0
  352. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
  353. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
  354. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_peg.json +0 -0
  355. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_plan.json +0 -0
  356. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_policy.json +0 -0
  357. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_profile.json +0 -0
  358. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_proto.json +0 -0
  359. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_r.json +0 -0
  360. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
  361. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_route.json +0 -0
  362. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_screen.json +0 -0
  363. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
  364. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
  365. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
  366. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  367. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_v.json +0 -0
  368. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
  369. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  370. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/paper1.yaml +0 -0
  371. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/paper2.yaml +0 -0
  372. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/paper3.yaml +0 -0
  373. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/paper4.yaml +0 -0
  374. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/phase0.yaml +0 -0
  375. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_a.yaml +0 -0
  376. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_acq.yaml +0 -0
  377. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_aldesign.yaml +0 -0
  378. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_alvalidate.yaml +0 -0
  379. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_atlas.yaml +0 -0
  380. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_b.yaml +0 -0
  381. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ba.yaml +0 -0
  382. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ba_v33.yaml +0 -0
  383. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ba_v45.yaml +0 -0
  384. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_bench.yaml +0 -0
  385. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_c.yaml +0 -0
  386. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_cal.yaml +0 -0
  387. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_calib.yaml +0 -0
  388. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_challenge.yaml +0 -0
  389. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_chat.yaml +0 -0
  390. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_cite.yaml +0 -0
  391. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_continual.yaml +0 -0
  392. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_cosci2.yaml +0 -0
  393. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_crit.yaml +0 -0
  394. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ct.yaml +0 -0
  395. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_d.yaml +0 -0
  396. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_drift.yaml +0 -0
  397. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_e.yaml +0 -0
  398. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_env.yaml +0 -0
  399. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ep.yaml +0 -0
  400. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_epitope.yaml +0 -0
  401. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_f.yaml +0 -0
  402. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_frontend.yaml +0 -0
  403. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_g.yaml +0 -0
  404. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_gen.yaml +0 -0
  405. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_genotox.yaml +0 -0
  406. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_graph.yaml +0 -0
  407. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_h.yaml +0 -0
  408. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_hybrid.yaml +0 -0
  409. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_immune.yaml +0 -0
  410. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_ingest.yaml +0 -0
  411. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_innate.yaml +0 -0
  412. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_loop.yaml +0 -0
  413. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_manifest.yaml +0 -0
  414. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_mc.yaml +0 -0
  415. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_mcp.yaml +0 -0
  416. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_mech.yaml +0 -0
  417. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_mon.yaml +0 -0
  418. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_o.yaml +0 -0
  419. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_openapi.yaml +0 -0
  420. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_orch.yaml +0 -0
  421. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_outcome.yaml +0 -0
  422. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_pareto.yaml +0 -0
  423. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_peg.yaml +0 -0
  424. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_plan.yaml +0 -0
  425. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_policy.yaml +0 -0
  426. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_profile.yaml +0 -0
  427. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_proto.yaml +0 -0
  428. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_r.yaml +0 -0
  429. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_redteam.yaml +0 -0
  430. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_route.yaml +0 -0
  431. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_screen.yaml +0 -0
  432. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_seroprev.yaml +0 -0
  433. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_simlab.yaml +0 -0
  434. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_twincal.yaml +0 -0
  435. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_uq.yaml +0 -0
  436. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_v.yaml +0 -0
  437. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_vcell.yaml +0 -0
  438. {pen_stack-6.4.0 → pen_stack-6.4.1}/prereg/ws_wv.yaml +0 -0
  439. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_build_atlas.py +0 -0
  440. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_build_durability.py +0 -0
  441. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_export_tracks.py +0 -0
  442. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_safety_concordance.py +0 -0
  443. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_train_safety.py +0 -0
  444. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p1_validation_report.py +0 -0
  445. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p2_build_atlas.py +0 -0
  446. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p3_benchmark_report.py +0 -0
  447. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p4_genome_scan.py +0 -0
  448. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p52_build_genotox_oracle.py +0 -0
  449. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/p53_build_epitope_oracle.py +0 -0
  450. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/ws_b_report.py +0 -0
  451. {pen_stack-6.4.0 → pen_stack-6.4.1}/scripts/ws_c_report.py +0 -0
  452. {pen_stack-6.4.0 → pen_stack-6.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 6.4.0
3
+ Version: 6.4.1
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
@@ -1,2 +1,2 @@
1
1
  """PEN-STACK v3.0 - open infrastructure for genome writing."""
2
- __version__ = "6.4.0"
2
+ __version__ = "6.4.1"
@@ -65,8 +65,15 @@ def _is_live(model: str, card: dict, probe: bool) -> tuple[bool, str]:
65
65
  if ex == "hosted_api":
66
66
  if not _net_on():
67
67
  return False, "set PEN_STACK_ORACLE_NET=1 to enable live calls"
68
- if model == "alphagenome" and not _alphagenome_key():
69
- return False, "add configs/alphagenome_api_key.txt"
68
+ if model == "alphagenome":
69
+ if not _alphagenome_key():
70
+ return False, "add configs/alphagenome_api_key.txt"
71
+ try:
72
+ from pen_stack.wgenome.providers import package_available
73
+ if not package_available():
74
+ return False, "pip install alphagenome"
75
+ except Exception: # noqa: BLE001
76
+ return False, "alphagenome package unavailable"
70
77
  if model == "evo2" and not _nvidia_key():
71
78
  return False, "add configs/nvidia_api_key.txt"
72
79
  return True, "hosted API ready"
@@ -242,11 +242,56 @@ def _history_block(history):
242
242
  return out
243
243
 
244
244
 
245
+ # -------------------------------------------------------------------------------------- pre-route safety screen
246
+ # Defence-in-depth: a hazard-adjacent message gets the Guardian (biosecurity gate) BEFORE lane routing, so a
247
+ # hazardous request that would route to general/explain/meta (no design signal) is still screened — not only the
248
+ # design lane. The Guardian is framing-stripped and is the AUTHORITY on the decision; this broad regex only
249
+ # decides WHETHER to invoke it (benign chat skips it, and a false-positive trigger is harmless — the Guardian
250
+ # clears generic biology). Aligned with configs/safety/hazard_registry.yaml.
251
+ _HAZARD_RE = re.compile(
252
+ r"\b(toxin|ricin|abrin|botulin(?:um)?|bont|anthrax|protective[- ]antigen|lethal[- ]factor|edema[- ]factor|"
253
+ r"shiga|verotoxin|conotoxin|saxitoxin|tetrodotoxin|tetanus|diphtheria|cholera|enterotoxin|superantigen|"
254
+ r"ribosome[- ]?inactivating|clostridial|nerve[- ]agent|sarin|soman|tabun|vx|novichok|smallpox|variola|"
255
+ r"ebola|marburg|nipah|hendra|lassa|h[ae]?morrhagic[- ]fever|select[- ]agent|bioweapon|biological[- ]weapon|"
256
+ r"biothreat|gain[- ]of[- ]function|pathogen|virulence)\b", re.I)
257
+
258
+
259
+ def _pre_route_safety(message: str):
260
+ """If the message is hazard-adjacent, run the Guardian (framing-stripped) on it BEFORE lane routing. Returns a
261
+ SafetyVerdict when the decision is refuse/escalate (the caller short-circuits to a decline), else None."""
262
+ if not _HAZARD_RE.search(message or ""):
263
+ return None
264
+ try:
265
+ from pen_stack.safety import safety_gate
266
+ verdict = safety_gate({"cargo_function": (message or "").strip()}, actor="chat")
267
+ except Exception: # noqa: BLE001 - the screen must never crash the chat; design lane still screens via run_tools
268
+ return None
269
+ return verdict if getattr(verdict, "decision", None) in {"refuse", "escalate"} else None
270
+
271
+
272
+ def _safety_decline(verdict) -> dict:
273
+ reason = (getattr(verdict, "reason", None) or "matched a biosecurity hazard signature").strip()
274
+ reply = (
275
+ f"⛔ **Declined by the biosecurity screen (Guardian).** This request was assessed as **{verdict.decision}** "
276
+ f"— {reason}\n\nPEN-STACK is a genome-writing co-scientist with a dual-use safety gate; it does not help "
277
+ "design, express, or enhance select-agent toxins or pathogens. If this was a general scientific question, "
278
+ "please rephrase it without a build/express intent.")
279
+ return {"mode": "safety", "provenance": "pen-stack", "grounded": True, "reply": reply, "backend": "guardian",
280
+ "tool_results": {"safety": {"decision": verdict.decision, "reason": verdict.reason}},
281
+ "angles": None, "facts": None}
282
+
283
+
245
284
  # -------------------------------------------------------------------------------------- the public entry point
246
285
  def grounded_reply(message: str, history: list | None = None, *, allow_llm: bool = True) -> dict:
247
286
  """Route the message to a lane and answer it. Returns {reply, mode, provenance, grounded, backend,
248
287
  tool_results?, facts?, angles?}. The first three lanes are engine-grounded (guard ON); the 'general' lane is
249
288
  explicitly labelled trained-knowledge and never attributes a number to PEN-STACK."""
289
+ # Defence-in-depth: screen hazard-adjacent messages with the Guardian BEFORE routing, so a hazardous request
290
+ # that would land in general/explain/meta (no design signal) is still refused — not only the design lane.
291
+ verdict = _pre_route_safety(message)
292
+ if verdict is not None:
293
+ return _safety_decline(verdict)
294
+
250
295
  mode = classify(message, history)
251
296
  hist = _history_block(history)
252
297
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 6.4.0
3
+ Version: 6.4.1
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pen-stack"
7
- version = "6.4.0"
7
+ version = "6.4.1"
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes