pen-stack 6.2.3__tar.gz → 6.2.4__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 (444) hide show
  1. {pen_stack-6.2.3 → pen_stack-6.2.4}/CHANGELOG.md +17 -0
  2. {pen_stack-6.2.3 → pen_stack-6.2.4}/CITATION.cff +1 -1
  3. {pen_stack-6.2.3 → pen_stack-6.2.4}/PKG-INFO +2 -2
  4. {pen_stack-6.2.3 → pen_stack-6.2.4}/README.md +1 -1
  5. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/__init__.py +1 -1
  6. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/web/llm.py +15 -8
  7. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/PKG-INFO +2 -2
  8. {pen_stack-6.2.3 → pen_stack-6.2.4}/pyproject.toml +1 -1
  9. {pen_stack-6.2.3 → pen_stack-6.2.4}/LICENSE +0 -0
  10. {pen_stack-6.2.3 → pen_stack-6.2.4}/MANIFEST.in +0 -0
  11. {pen_stack-6.2.3 → pen_stack-6.2.4}/bench/run.py +0 -0
  12. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  13. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_bench/README.md +0 -0
  14. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  15. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  16. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  17. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_challenge/README.md +0 -0
  18. {pen_stack-6.2.3 → pen_stack-6.2.4}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
  19. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/antipeg.yaml +0 -0
  20. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/atlas_families.yaml +0 -0
  21. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/bridge_offtarget_profile.yaml +0 -0
  22. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/capsid_epitope_oracle.yaml +0 -0
  23. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/capsid_sequences.fasta +0 -0
  24. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/cargo_polish.yaml +0 -0
  25. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/cell_types.yaml +0 -0
  26. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/datasets.yaml +0 -0
  27. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/delivery_constraints.yaml +0 -0
  28. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/delivery_rules.yaml +0 -0
  29. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/delivery_vehicles.yaml +0 -0
  30. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/gates_v3.yaml +0 -0
  31. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/genotoxicity_oracle.yaml +0 -0
  32. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/gsh_validated_heldout.yaml +0 -0
  33. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/intent_weights.yaml +0 -0
  34. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/known_unknowns.yaml +0 -0
  35. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/llm.yaml +0 -0
  36. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/monitor_queries.yaml +0 -0
  37. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/oracles/scope_cards.yaml +0 -0
  38. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/rules/delivery.yaml +0 -0
  39. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/rules/fold.yaml +0 -0
  40. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/rules/multiplex.yaml +0 -0
  41. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/rules/payload.yaml +0 -0
  42. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/rules/reachability.yaml +0 -0
  43. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/safety/hazard_registry.yaml +0 -0
  44. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/safety/policy.yaml +0 -0
  45. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/safety/probes.yaml +0 -0
  46. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/score_axes.yaml +0 -0
  47. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/seroprevalence.yaml +0 -0
  48. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/target_sites.yaml +0 -0
  49. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/universe_crosswalk.yaml +0 -0
  50. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/write_types.yaml +0 -0
  51. {pen_stack-6.2.3 → pen_stack-6.2.4}/configs/wtkb_curated.yaml +0 -0
  52. {pen_stack-6.2.3 → pen_stack-6.2.4}/data/curated/bridge_offtarget_energetics.json +0 -0
  53. {pen_stack-6.2.3 → pen_stack-6.2.4}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  54. {pen_stack-6.2.3 → pen_stack-6.2.4}/data/curated/gene_coords.parquet +0 -0
  55. {pen_stack-6.2.3 → pen_stack-6.2.4}/data/curated/unified_editor_universe.parquet +0 -0
  56. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/BACKLOG.md +0 -0
  57. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/DEPLOY.md +0 -0
  58. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/INFRA.md +0 -0
  59. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/MCP.md +0 -0
  60. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/RELEASING.md +0 -0
  61. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/REPRO.md +0 -0
  62. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/STABILITY.md +0 -0
  63. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/agent.md +0 -0
  64. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/alphagenome_feasibility.md +0 -0
  65. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/autonomy.md +0 -0
  66. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/benchmark_circularity.md +0 -0
  67. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/biosecurity.md +0 -0
  68. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/build_interface.md +0 -0
  69. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/cards/atlas.md +0 -0
  70. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/cards/durability.md +0 -0
  71. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/cards/safety.md +0 -0
  72. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/challenge.md +0 -0
  73. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/closed_loop.md +0 -0
  74. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/co_scientist.md +0 -0
  75. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/co_scientist_loop.md +0 -0
  76. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/delivery.md +0 -0
  77. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/delivery_immunology.md +0 -0
  78. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/digital_twin.md +0 -0
  79. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/dissemination.md +0 -0
  80. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/environment.md +0 -0
  81. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/experiment_design.md +0 -0
  82. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/generative_design.md +0 -0
  83. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/index.md +0 -0
  84. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/integrations.md +0 -0
  85. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/mechanistic_constraints.md +0 -0
  86. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/oracles.md +0 -0
  87. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/positioning.md +0 -0
  88. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/private_data_formats.md +0 -0
  89. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/quickstart.md +0 -0
  90. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/responsible_use.md +0 -0
  91. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/rules.md +0 -0
  92. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/scope.md +0 -0
  93. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/scorecard.md +0 -0
  94. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/tutorials/compare-families.md +0 -0
  95. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/tutorials/score-deliverability.md +0 -0
  96. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/tutorials/where-can-i-write.md +0 -0
  97. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  98. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/uncertainty.md +0 -0
  99. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/verify.md +0 -0
  100. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/world_model.md +0 -0
  101. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/writer_verification.md +0 -0
  102. {pen_stack-6.2.3 → pen_stack-6.2.4}/docs/wtkb.md +0 -0
  103. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/_resources.py +0 -0
  104. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/active/__init__.py +0 -0
  105. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/active/acquire.py +0 -0
  106. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/active/design.py +0 -0
  107. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/active/validate.py +0 -0
  108. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/__init__.py +0 -0
  109. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/finetune.py +0 -0
  110. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/ingest.py +0 -0
  111. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/pipeline.py +0 -0
  112. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/recalibrate.py +0 -0
  113. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/adapt/report.py +0 -0
  114. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/__init__.py +0 -0
  115. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/cite.py +0 -0
  116. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/co_scientist.py +0 -0
  117. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/epistemic.py +0 -0
  118. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/guardrails.py +0 -0
  119. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/mcp_server.py +0 -0
  120. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/orchestrator.py +0 -0
  121. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/orchestrator_live.py +0 -0
  122. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/pen_agent.py +0 -0
  123. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/scope.py +0 -0
  124. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/agent/tools.py +0 -0
  125. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/api/__init__.py +0 -0
  126. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/api/manifest.py +0 -0
  127. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/__init__.py +0 -0
  128. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/build_wtkb.py +0 -0
  129. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/crosslink.py +0 -0
  130. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/expand.py +0 -0
  131. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/schema.py +0 -0
  132. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/scorecard.py +0 -0
  133. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/universe.py +0 -0
  134. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/variant_propose.py +0 -0
  135. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/atlas/writer_verify.py +0 -0
  136. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/__init__.py +0 -0
  137. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/activity.py +0 -0
  138. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/cli.py +0 -0
  139. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/fold_qc.py +0 -0
  140. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/guide_qc.py +0 -0
  141. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/ingest.py +0 -0
  142. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/offtarget.py +0 -0
  143. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/offtarget_energetics.py +0 -0
  144. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/ortholog_screen.py +0 -0
  145. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/bridge/pipeline.py +0 -0
  146. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/build/__init__.py +0 -0
  147. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/build/ingest.py +0 -0
  148. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/build/protocol.py +0 -0
  149. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/build/simlab.py +0 -0
  150. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/cli.py +0 -0
  151. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/__init__.py +0 -0
  152. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/encode.py +0 -0
  153. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/genome.py +0 -0
  154. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/ingest_chromatin.py +0 -0
  155. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/ingest_integration.py +0 -0
  156. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/ingest_safety_annot.py +0 -0
  157. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/data/ingest_trip.py +0 -0
  158. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/design/__init__.py +0 -0
  159. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/design/generate.py +0 -0
  160. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/design/pareto.py +0 -0
  161. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/design/space.py +0 -0
  162. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/env/__init__.py +0 -0
  163. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/env/genome_writing_env.py +0 -0
  164. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/env/policies.py +0 -0
  165. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/__init__.py +0 -0
  166. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/build.py +0 -0
  167. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/cell_types.py +0 -0
  168. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/ingest.py +0 -0
  169. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/query.py +0 -0
  170. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/graph/schema.py +0 -0
  171. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/loop/__init__.py +0 -0
  172. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/loop/continual.py +0 -0
  173. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/loop/cycle.py +0 -0
  174. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/loop/drift.py +0 -0
  175. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/mech/__init__.py +0 -0
  176. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/mech/classify_atlas.py +0 -0
  177. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/mech/whitelist.py +0 -0
  178. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/monitor/__init__.py +0 -0
  179. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/monitor/europepmc.py +0 -0
  180. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/monitor/run.py +0 -0
  181. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/monitor/triage.py +0 -0
  182. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/__init__.py +0 -0
  183. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/cache.py +0 -0
  184. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/energetics.py +0 -0
  185. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/genome.py +0 -0
  186. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/protein_design.py +0 -0
  187. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/rna.py +0 -0
  188. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/schema.py +0 -0
  189. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/structure.py +0 -0
  190. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/oracles/vcell.py +0 -0
  191. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/__init__.py +0 -0
  192. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/antipeg_oracle.py +0 -0
  193. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
  194. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/cargo.py +0 -0
  195. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/cargo_polish.py +0 -0
  196. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/delivery.py +0 -0
  197. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/delivery_constraints.py +0 -0
  198. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/delivery_immunology.py +0 -0
  199. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/delivery_vehicles.py +0 -0
  200. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/genotoxicity_oracle.py +0 -0
  201. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/immune_profile.py +0 -0
  202. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/innate_sensing.py +0 -0
  203. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/multiplex.py +0 -0
  204. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/optimize.py +0 -0
  205. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/pipeline.py +0 -0
  206. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/report.py +0 -0
  207. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/router.py +0 -0
  208. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/seroprevalence_oracle.py +0 -0
  209. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/planner/target_site.py +0 -0
  210. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rag/__init__.py +0 -0
  211. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rag/index.py +0 -0
  212. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rag/llm.py +0 -0
  213. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rag/qa.py +0 -0
  214. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rules/__init__.py +0 -0
  215. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rules/evaluators.py +0 -0
  216. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rules/loader.py +0 -0
  217. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rules/schema.py +0 -0
  218. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/rules/solver.py +0 -0
  219. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/__init__.py +0 -0
  220. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/audit.py +0 -0
  221. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/gate.py +0 -0
  222. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/policy.py +0 -0
  223. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/redteam.py +0 -0
  224. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/registry.py +0 -0
  225. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/safety/screen.py +0 -0
  226. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/score/__init__.py +0 -0
  227. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/score/recalibrate.py +0 -0
  228. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/score/therapeutic.py +0 -0
  229. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/server/__init__.py +0 -0
  230. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/server/api.py +0 -0
  231. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/twin/__init__.py +0 -0
  232. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/twin/calibrate.py +0 -0
  233. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/twin/mechanistic.py +0 -0
  234. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/twin/outcome.py +0 -0
  235. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/ui/__init__.py +0 -0
  236. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/ui/app.py +0 -0
  237. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/__init__.py +0 -0
  238. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/adapt_demo.py +0 -0
  239. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/agent_eval.py +0 -0
  240. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  241. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
  242. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_graph_tasks.py +0 -0
  243. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_rule_tasks.py +0 -0
  244. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_trust_tasks.py +0 -0
  245. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  246. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  247. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/cargo_directionality.py +0 -0
  248. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/closed_loop.py +0 -0
  249. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/durability_baselines.py +0 -0
  250. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/experiment_design.py +0 -0
  251. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/forward_hypotheses.py +0 -0
  252. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/generative_design.py +0 -0
  253. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/guide_qc_demo.py +0 -0
  254. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/immune_calibration.py +0 -0
  255. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/intent_specification.py +0 -0
  256. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  257. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  258. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/outcome_calibration.py +0 -0
  259. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/outcome_prediction.py +0 -0
  260. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/paper3_benchmark.py +0 -0
  261. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/paper4_real_validation.py +0 -0
  262. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/paper4_validation.py +0 -0
  263. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/protocol_safety.py +0 -0
  264. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/safety_screening.py +0 -0
  265. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/selective_prediction.py +0 -0
  266. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/seq_vs_measured.py +0 -0
  267. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/target_site_controls.py +0 -0
  268. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/uncertainty_eval.py +0 -0
  269. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/ungrounded_baseline.py +0 -0
  270. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/within_locus_ranking.py +0 -0
  271. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/validate/writer_recovery.py +0 -0
  272. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/verify/__init__.py +0 -0
  273. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/verify/schema.py +0 -0
  274. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/verify/service.py +0 -0
  275. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/web/__init__.py +0 -0
  276. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/web/server.py +0 -0
  277. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/web/tools.py +0 -0
  278. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/__init__.py +0 -0
  279. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/chromatin_seq.py +0 -0
  280. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/durability.py +0 -0
  281. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/export_tracks.py +0 -0
  282. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/features.py +0 -0
  283. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/gsh_baseline.py +0 -0
  284. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/mesh_features.py +0 -0
  285. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/ood.py +0 -0
  286. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/providers.py +0 -0
  287. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/safety.py +0 -0
  288. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/structure3d.py +0 -0
  289. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/uncertainty.py +0 -0
  290. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack/wgenome/writability.py +0 -0
  291. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/SOURCES.txt +0 -0
  292. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/dependency_links.txt +0 -0
  293. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/entry_points.txt +0 -0
  294. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/requires.txt +0 -0
  295. {pen_stack-6.2.3 → pen_stack-6.2.4}/pen_stack.egg-info/top_level.txt +0 -0
  296. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_phase0.json +0 -0
  297. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  298. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_phase2.json +0 -0
  299. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_phase3.json +0 -0
  300. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_a.json +0 -0
  301. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_acq.json +0 -0
  302. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
  303. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
  304. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  305. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_b.json +0 -0
  306. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  307. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  308. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  309. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  310. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_c.json +0 -0
  311. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  312. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_calib.json +0 -0
  313. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
  314. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_chat.json +0 -0
  315. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_cite.json +0 -0
  316. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_continual.json +0 -0
  317. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
  318. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_crit.json +0 -0
  319. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  320. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_d.json +0 -0
  321. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_drift.json +0 -0
  322. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_e.json +0 -0
  323. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_env.json +0 -0
  324. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  325. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
  326. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_f.json +0 -0
  327. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
  328. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_g.json +0 -0
  329. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_gen.json +0 -0
  330. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
  331. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  332. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_h.json +0 -0
  333. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_immune.json +0 -0
  334. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
  335. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_innate.json +0 -0
  336. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_loop.json +0 -0
  337. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
  338. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  339. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
  340. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_mech.json +0 -0
  341. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  342. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_o.json +0 -0
  343. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
  344. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_orch.json +0 -0
  345. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
  346. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
  347. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_peg.json +0 -0
  348. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_plan.json +0 -0
  349. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_policy.json +0 -0
  350. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_profile.json +0 -0
  351. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_proto.json +0 -0
  352. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_r.json +0 -0
  353. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
  354. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_route.json +0 -0
  355. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_screen.json +0 -0
  356. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
  357. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
  358. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
  359. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  360. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_v.json +0 -0
  361. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
  362. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  363. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/paper1.yaml +0 -0
  364. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/paper2.yaml +0 -0
  365. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/paper3.yaml +0 -0
  366. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/paper4.yaml +0 -0
  367. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/phase0.yaml +0 -0
  368. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_a.yaml +0 -0
  369. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_acq.yaml +0 -0
  370. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_aldesign.yaml +0 -0
  371. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_alvalidate.yaml +0 -0
  372. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_atlas.yaml +0 -0
  373. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_b.yaml +0 -0
  374. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ba.yaml +0 -0
  375. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ba_v33.yaml +0 -0
  376. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ba_v45.yaml +0 -0
  377. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_bench.yaml +0 -0
  378. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_c.yaml +0 -0
  379. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_cal.yaml +0 -0
  380. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_calib.yaml +0 -0
  381. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_challenge.yaml +0 -0
  382. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_chat.yaml +0 -0
  383. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_cite.yaml +0 -0
  384. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_continual.yaml +0 -0
  385. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_cosci2.yaml +0 -0
  386. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_crit.yaml +0 -0
  387. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ct.yaml +0 -0
  388. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_d.yaml +0 -0
  389. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_drift.yaml +0 -0
  390. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_e.yaml +0 -0
  391. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_env.yaml +0 -0
  392. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ep.yaml +0 -0
  393. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_epitope.yaml +0 -0
  394. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_f.yaml +0 -0
  395. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_frontend.yaml +0 -0
  396. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_g.yaml +0 -0
  397. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_gen.yaml +0 -0
  398. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_genotox.yaml +0 -0
  399. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_graph.yaml +0 -0
  400. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_h.yaml +0 -0
  401. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_immune.yaml +0 -0
  402. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_ingest.yaml +0 -0
  403. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_innate.yaml +0 -0
  404. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_loop.yaml +0 -0
  405. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_manifest.yaml +0 -0
  406. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_mc.yaml +0 -0
  407. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_mcp.yaml +0 -0
  408. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_mech.yaml +0 -0
  409. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_mon.yaml +0 -0
  410. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_o.yaml +0 -0
  411. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_openapi.yaml +0 -0
  412. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_orch.yaml +0 -0
  413. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_outcome.yaml +0 -0
  414. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_pareto.yaml +0 -0
  415. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_peg.yaml +0 -0
  416. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_plan.yaml +0 -0
  417. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_policy.yaml +0 -0
  418. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_profile.yaml +0 -0
  419. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_proto.yaml +0 -0
  420. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_r.yaml +0 -0
  421. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_redteam.yaml +0 -0
  422. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_route.yaml +0 -0
  423. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_screen.yaml +0 -0
  424. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_seroprev.yaml +0 -0
  425. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_simlab.yaml +0 -0
  426. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_twincal.yaml +0 -0
  427. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_uq.yaml +0 -0
  428. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_v.yaml +0 -0
  429. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_vcell.yaml +0 -0
  430. {pen_stack-6.2.3 → pen_stack-6.2.4}/prereg/ws_wv.yaml +0 -0
  431. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_build_atlas.py +0 -0
  432. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_build_durability.py +0 -0
  433. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_export_tracks.py +0 -0
  434. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_safety_concordance.py +0 -0
  435. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_train_safety.py +0 -0
  436. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p1_validation_report.py +0 -0
  437. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p2_build_atlas.py +0 -0
  438. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p3_benchmark_report.py +0 -0
  439. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p4_genome_scan.py +0 -0
  440. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p52_build_genotox_oracle.py +0 -0
  441. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/p53_build_epitope_oracle.py +0 -0
  442. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/ws_b_report.py +0 -0
  443. {pen_stack-6.2.3 → pen_stack-6.2.4}/scripts/ws_c_report.py +0 -0
  444. {pen_stack-6.2.3 → pen_stack-6.2.4}/setup.cfg +0 -0
@@ -3,6 +3,23 @@
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.2.4] - 2026-06-12 - v6.2.4: faster grounded narration (LLM backends) (patch)
7
+
8
+ **Performance + a real fix, from benchmarking the narration backends on the deployment GPU (RTX A4000).** The
9
+ LLM only narrates over engine tool results (the grounding guard runs regardless), so latency is the thing to
10
+ tune. Measured (real grounded prompt): Ollama qwen2.5:**7b** = ~50s warm / 120s cold (3.4 tok/s — a workstation
11
+ GPU is slow for LLM); qwen2.5:**3b** = ~27s; llama3.2:3b = ~17s; hosted **Nemotron‑49B = ~5s**. All keep the
12
+ grounding guard clean (0 ungrounded). The old Nemotron fallback model (`llama-3.1-nemotron-70b-instruct`) now
13
+ **404s** — i.e. the fallback was silently broken.
14
+
15
+ ### Fixed / changed (`pen_stack/web/llm.py`)
16
+ - **Nemotron model corrected** to `nvidia/llama-3.3-nemotron-super-49b-v1` (the 70B name was retired → the
17
+ fallback 404'd). Restores a working, ~5s hosted backend.
18
+ - **Default local model qwen2.5:7b → qwen2.5:3b‑instruct** (~2× faster narration, grounding unchanged).
19
+ - **`keep_alive` (default 30m)** so the model stays resident on the GPU and idle calls don't pay the cold start.
20
+ - **Configurable backend order** `PEN_STACK_LLM_ORDER` (default `ollama,nemotron` = local/private‑first;
21
+ `nemotron,ollama` = speed‑first ~5s). `web/.env.example` documents all knobs.
22
+
6
23
  ## [6.2.3] - 2026-06-12 - v6.2.3: scope matcher covers functional titer + durability (patch)
7
24
 
8
25
  **Honesty-coverage fix (from the 20-query acceptance suite, `phase_6.2/PEN-STACK_ACCEPTANCE_TESTS.md`).** The
@@ -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: 6.2.3
4
+ version: 6.2.4
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: 6.2.3
3
+ Version: 6.2.4
4
4
  Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
5
5
  Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
6
6
  License: MIT
@@ -90,7 +90,7 @@ 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-6.2.3-blue.svg)](CHANGELOG.md)
93
+ [![Version](https://img.shields.io/badge/version-6.2.4-blue.svg)](CHANGELOG.md)
94
94
  [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
95
95
  [![Tests](https://img.shields.io/badge/tests-371%20passing-success.svg)](tests/)
96
96
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
@@ -15,7 +15,7 @@ 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-6.2.3-blue.svg)](CHANGELOG.md)
18
+ [![Version](https://img.shields.io/badge/version-6.2.4-blue.svg)](CHANGELOG.md)
19
19
  [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
20
20
  [![Tests](https://img.shields.io/badge/tests-371%20passing-success.svg)](tests/)
21
21
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
@@ -1,2 +1,2 @@
1
1
  """PEN-STACK v3.0 - open infrastructure for genome writing."""
2
- __version__ = "6.2.3"
2
+ __version__ = "6.2.4"
@@ -147,10 +147,11 @@ def _call_ollama(prompt: str) -> str:
147
147
 
148
148
  r = requests.post(
149
149
  f"{_ollama_base()}/api/generate",
150
- json={"model": os.getenv("OLLAMA_MODEL", "qwen2.5:7b-instruct"),
150
+ json={"model": os.getenv("OLLAMA_MODEL", "qwen2.5:3b-instruct"), # 3B narrates ~2x faster than 7B
151
151
  "prompt": prompt, "system": SYSTEM, "stream": False,
152
+ "keep_alive": os.getenv("OLLAMA_KEEP_ALIVE", "30m"), # keep warm -> avoid the cold start
152
153
  "options": {"temperature": 0.2,
153
- "num_predict": int(os.getenv("OLLAMA_NUM_PREDICT", "450"))}},
154
+ "num_predict": int(os.getenv("OLLAMA_NUM_PREDICT", "400"))}},
154
155
  timeout=_llm_timeout())
155
156
  r.raise_for_status()
156
157
  return r.json()["response"]
@@ -174,9 +175,9 @@ def _call_nemotron(prompt: str) -> str:
174
175
  r = requests.post(
175
176
  "https://integrate.api.nvidia.com/v1/chat/completions",
176
177
  headers={"Authorization": f"Bearer {key}"},
177
- json={"model": os.getenv("NEMOTRON_MODEL", "nvidia/llama-3.1-nemotron-70b-instruct"),
178
+ json={"model": os.getenv("NEMOTRON_MODEL", "nvidia/llama-3.3-nemotron-super-49b-v1"),
178
179
  "messages": [{"role": "system", "content": SYSTEM}, {"role": "user", "content": prompt}],
179
- "temperature": 0.2, "max_tokens": 900},
180
+ "temperature": 0.2, "max_tokens": 600},
180
181
  timeout=_llm_timeout())
181
182
  r.raise_for_status()
182
183
  return r.json()["choices"][0]["message"]["content"]
@@ -207,11 +208,17 @@ def grounded_reply(message: str, history: list | None = None, *, allow_llm: bool
207
208
  prompt = _prompt(message, tool_results, history)
208
209
 
209
210
  if allow_llm and os.getenv("PEN_STACK_NO_LLM") != "1":
210
- for backend in (_call_ollama, _call_nemotron):
211
+ # configurable order: "ollama,nemotron" (privacy/local-first, the default) or "nemotron,ollama"
212
+ # (speed-first — the hosted 49B answers in ~5s vs ~25-50s on a workstation GPU). Either way the guard runs.
213
+ backends = {"ollama": _call_ollama, "nemotron": _call_nemotron}
214
+ order = [b.strip().lower() for b in os.getenv("PEN_STACK_LLM_ORDER", "ollama,nemotron").split(",")]
215
+ for name in order:
216
+ fn = backends.get(name)
217
+ if fn is None:
218
+ continue
211
219
  try:
212
- text = _enforce_grounding(backend(prompt), grounded) # HARD GATE
213
- return {"reply": text, "tool_results": tool_results, "grounded": True,
214
- "backend": backend.__name__.removeprefix("_call_")}
220
+ text = _enforce_grounding(fn(prompt), grounded) # HARD GATE
221
+ return {"reply": text, "tool_results": tool_results, "grounded": True, "backend": name}
215
222
  except Exception: # any backend failure → next, then deterministic
216
223
  continue
217
224
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 6.2.3
3
+ Version: 6.2.4
4
4
  Summary: Open infrastructure for genome writing: the Writable Genome atlas, the Writer Atlas, and the Write Planner.
5
5
  Author-email: Anees Ahmed Mahaboob Ali <ahmedaneesm@gmail.com>
6
6
  License: MIT
@@ -90,7 +90,7 @@ 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-6.2.3-blue.svg)](CHANGELOG.md)
93
+ [![Version](https://img.shields.io/badge/version-6.2.4-blue.svg)](CHANGELOG.md)
94
94
  [![Status](https://img.shields.io/badge/status-1.0%20First%20Stable-success.svg)](docs/STABILITY.md)
95
95
  [![Tests](https://img.shields.io/badge/tests-371%20passing-success.svg)](tests/)
96
96
  [![Lint: ruff](https://img.shields.io/badge/lint-ruff-purple.svg)](https://github.com/astral-sh/ruff)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pen-stack"
7
- version = "6.2.3"
7
+ version = "6.2.4"
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