pen-stack 7.1.6__tar.gz → 7.1.7__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 (567) hide show
  1. {pen_stack-7.1.6 → pen_stack-7.1.7}/CHANGELOG.md +25 -0
  2. {pen_stack-7.1.6 → pen_stack-7.1.7}/CITATION.cff +1 -1
  3. {pen_stack-7.1.6 → pen_stack-7.1.7}/PKG-INFO +1 -1
  4. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/__init__.py +1 -1
  5. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/immune_profile.py +65 -0
  6. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/PKG-INFO +1 -1
  7. {pen_stack-7.1.6 → pen_stack-7.1.7}/pyproject.toml +1 -1
  8. {pen_stack-7.1.6 → pen_stack-7.1.7}/LICENSE +0 -0
  9. {pen_stack-7.1.6 → pen_stack-7.1.7}/MANIFEST.in +0 -0
  10. {pen_stack-7.1.6 → pen_stack-7.1.7}/README.md +0 -0
  11. {pen_stack-7.1.6 → pen_stack-7.1.7}/bench/run.py +0 -0
  12. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_grounding/README.md +0 -0
  13. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_grounding/SHA256SUMS +0 -0
  14. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_headtohead/README.md +0 -0
  15. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_routing/README.md +0 -0
  16. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_routing/SHA256SUMS +0 -0
  17. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_safety/README.md +0 -0
  18. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/chat_safety/SHA256SUMS +0 -0
  19. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/delivery/SHA256SUMS +0 -0
  20. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_bench/LEADERBOARD.md +0 -0
  21. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_bench/README.md +0 -0
  22. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_bench/SHA256SUMS +0 -0
  23. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_bench/SUBMISSIONS.md +0 -0
  24. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_bench/tasks.yaml +0 -0
  25. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_challenge/README.md +0 -0
  26. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/genome_writing_challenge/SUBMISSIONS.md +0 -0
  27. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/loop/SHA256SUMS +0 -0
  28. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/offtarget/SHA256SUMS +0 -0
  29. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/oracle/SHA256SUMS +0 -0
  30. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/position_effect/README.md +0 -0
  31. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/position_effect/SHA256SUMS +0 -0
  32. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/verify/SHA256SUMS +0 -0
  33. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/writer_efficiency/README.md +0 -0
  34. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/writer_efficiency/SHA256SUMS +0 -0
  35. {pen_stack-7.1.6 → pen_stack-7.1.7}/benchmarks/writespec/SHA256SUMS +0 -0
  36. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/aav_serotype_tropism.yaml +0 -0
  37. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/antipeg.yaml +0 -0
  38. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/atlas_families.yaml +0 -0
  39. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/bridge_offtarget_profile.yaml +0 -0
  40. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/calibration/preexisting_nab_independent.yaml +0 -0
  41. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/capsid_epitope_oracle.yaml +0 -0
  42. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/capsid_sequences.fasta +0 -0
  43. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/cargo_polish.yaml +0 -0
  44. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/cell_types.yaml +0 -0
  45. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/datasets.yaml +0 -0
  46. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/delivery_constraints.yaml +0 -0
  47. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/delivery_rules.yaml +0 -0
  48. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/delivery_vehicles.yaml +0 -0
  49. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/expression/modifiers.yaml +0 -0
  50. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/expression/promoters.yaml +0 -0
  51. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/gates_v3.yaml +0 -0
  52. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/genotoxicity_oracle.yaml +0 -0
  53. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/gsh_validated_heldout.yaml +0 -0
  54. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/intent_weights.yaml +0 -0
  55. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/known_unknowns.yaml +0 -0
  56. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/llm.yaml +0 -0
  57. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/metric_guide.yaml +0 -0
  58. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/mhc_epitope_oracle.yaml +0 -0
  59. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/monitor_queries.yaml +0 -0
  60. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/oracles/execution.yaml +0 -0
  61. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/oracles/reliability.yaml +0 -0
  62. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/oracles/scope_cards.yaml +0 -0
  63. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/compliance.yaml +0 -0
  64. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/delivery.yaml +0 -0
  65. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/fold.yaml +0 -0
  66. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/multiplex.yaml +0 -0
  67. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/payload.yaml +0 -0
  68. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/rules/reachability.yaml +0 -0
  69. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/safety/hazard_registry.yaml +0 -0
  70. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/safety/policy.yaml +0 -0
  71. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/safety/probes.yaml +0 -0
  72. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/score_axes.yaml +0 -0
  73. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/seroprevalence.yaml +0 -0
  74. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/target_sites.yaml +0 -0
  75. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/universe_crosswalk.yaml +0 -0
  76. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/write_types.yaml +0 -0
  77. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/writer_sequences.fasta +0 -0
  78. {pen_stack-7.1.6 → pen_stack-7.1.7}/configs/wtkb_curated.yaml +0 -0
  79. {pen_stack-7.1.6 → pen_stack-7.1.7}/data/curated/bridge_offtarget_energetics.json +0 -0
  80. {pen_stack-7.1.6 → pen_stack-7.1.7}/data/curated/bridge_offtarget_profile_measured.parquet +0 -0
  81. {pen_stack-7.1.6 → pen_stack-7.1.7}/data/curated/gene_coords.parquet +0 -0
  82. {pen_stack-7.1.6 → pen_stack-7.1.7}/data/curated/unified_editor_universe.parquet +0 -0
  83. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/BACKLOG.md +0 -0
  84. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/DEPLOY.md +0 -0
  85. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/INFRA.md +0 -0
  86. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/MCP.md +0 -0
  87. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/RELEASING.md +0 -0
  88. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/REPRO.md +0 -0
  89. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/STABILITY.md +0 -0
  90. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/agent.md +0 -0
  91. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/alphagenome_feasibility.md +0 -0
  92. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/autonomy.md +0 -0
  93. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/benchmark_circularity.md +0 -0
  94. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/biosecurity.md +0 -0
  95. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/build_interface.md +0 -0
  96. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/atlas.md +0 -0
  97. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/durability.md +0 -0
  98. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/offtarget_data.md +0 -0
  99. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/position_effect_data.md +0 -0
  100. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/safety.md +0 -0
  101. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/cards/writer_efficiency_data.md +0 -0
  102. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/challenge.md +0 -0
  103. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/closed_loop.md +0 -0
  104. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/co_scientist.md +0 -0
  105. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/co_scientist_loop.md +0 -0
  106. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/delivery.md +0 -0
  107. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/delivery_immunology.md +0 -0
  108. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/delivery_recommender.md +0 -0
  109. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/digital_twin.md +0 -0
  110. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/dissemination.md +0 -0
  111. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/environment.md +0 -0
  112. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/experiment_design.md +0 -0
  113. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/generative_design.md +0 -0
  114. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/immune_profiler.md +0 -0
  115. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/index.md +0 -0
  116. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/integrations.md +0 -0
  117. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/live_oracles.md +0 -0
  118. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/mechanistic_constraints.md +0 -0
  119. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/offtarget.md +0 -0
  120. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/oracle_mesh.md +0 -0
  121. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/oracles.md +0 -0
  122. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/position_effect.md +0 -0
  123. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/positioning.md +0 -0
  124. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/private_data_formats.md +0 -0
  125. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/quickstart.md +0 -0
  126. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/responsible_use.md +0 -0
  127. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/rule_spec.md +0 -0
  128. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/rules.md +0 -0
  129. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/scope.md +0 -0
  130. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/scorecard.md +0 -0
  131. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/tpe_bench.md +0 -0
  132. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/tutorials/compare-families.md +0 -0
  133. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/tutorials/score-deliverability.md +0 -0
  134. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/tutorials/where-can-i-write.md +0 -0
  135. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/tutorials/which-writer-reaches-locus.md +0 -0
  136. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/uncertainty.md +0 -0
  137. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/verify.md +0 -0
  138. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/verify_service.md +0 -0
  139. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/world_model.md +0 -0
  140. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/writer_efficiency.md +0 -0
  141. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/writer_verification.md +0 -0
  142. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/writespec_bench.md +0 -0
  143. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/writespec_profile.md +0 -0
  144. {pen_stack-7.1.6 → pen_stack-7.1.7}/docs/wtkb.md +0 -0
  145. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/_resources.py +0 -0
  146. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/__init__.py +0 -0
  147. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/acquire.py +0 -0
  148. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/brains.py +0 -0
  149. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/campaign.py +0 -0
  150. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/design.py +0 -0
  151. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/active/validate.py +0 -0
  152. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/__init__.py +0 -0
  153. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/finetune.py +0 -0
  154. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/ingest.py +0 -0
  155. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/pipeline.py +0 -0
  156. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/recalibrate.py +0 -0
  157. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/adapt/report.py +0 -0
  158. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/__init__.py +0 -0
  159. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/cite.py +0 -0
  160. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/co_scientist.py +0 -0
  161. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/epistemic.py +0 -0
  162. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/guardrails.py +0 -0
  163. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/mcp_server.py +0 -0
  164. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/orchestrator.py +0 -0
  165. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/orchestrator_live.py +0 -0
  166. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/pen_agent.py +0 -0
  167. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/scope.py +0 -0
  168. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/agent/tools.py +0 -0
  169. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/api/__init__.py +0 -0
  170. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/api/manifest.py +0 -0
  171. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/__init__.py +0 -0
  172. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/build_wtkb.py +0 -0
  173. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/crosslink.py +0 -0
  174. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/expand.py +0 -0
  175. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/guide_design.py +0 -0
  176. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/schema.py +0 -0
  177. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/scorecard.py +0 -0
  178. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/universe.py +0 -0
  179. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/variant_propose.py +0 -0
  180. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/writer_efficiency.py +0 -0
  181. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/writer_predict.py +0 -0
  182. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/writer_recommend.py +0 -0
  183. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/atlas/writer_verify.py +0 -0
  184. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/__init__.py +0 -0
  185. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/activity.py +0 -0
  186. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/cli.py +0 -0
  187. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/fold_qc.py +0 -0
  188. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/guide_qc.py +0 -0
  189. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/ingest.py +0 -0
  190. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/offtarget.py +0 -0
  191. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/offtarget_energetics.py +0 -0
  192. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/ortholog_screen.py +0 -0
  193. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/bridge/pipeline.py +0 -0
  194. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/build/__init__.py +0 -0
  195. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/build/cloudlab.py +0 -0
  196. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/build/ingest.py +0 -0
  197. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/build/protocol.py +0 -0
  198. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/build/simlab.py +0 -0
  199. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/cli.py +0 -0
  200. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/__init__.py +0 -0
  201. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/encode.py +0 -0
  202. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/genome.py +0 -0
  203. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/ingest_chromatin.py +0 -0
  204. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/ingest_integration.py +0 -0
  205. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/ingest_safety_annot.py +0 -0
  206. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/data/ingest_trip.py +0 -0
  207. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/__init__.py +0 -0
  208. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/capsid_generate.py +0 -0
  209. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/generate.py +0 -0
  210. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/pareto.py +0 -0
  211. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/space.py +0 -0
  212. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/design/writer_variants.py +0 -0
  213. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/env/__init__.py +0 -0
  214. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/env/genome_writing_env.py +0 -0
  215. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/env/policies.py +0 -0
  216. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/__init__.py +0 -0
  217. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/build.py +0 -0
  218. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/cell_types.py +0 -0
  219. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/ingest.py +0 -0
  220. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/query.py +0 -0
  221. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/graph/schema.py +0 -0
  222. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/loop/__init__.py +0 -0
  223. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/loop/continual.py +0 -0
  224. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/loop/cycle.py +0 -0
  225. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/loop/drift.py +0 -0
  226. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/mech/__init__.py +0 -0
  227. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/mech/classify_atlas.py +0 -0
  228. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/mech/whitelist.py +0 -0
  229. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/monitor/__init__.py +0 -0
  230. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/monitor/europepmc.py +0 -0
  231. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/monitor/run.py +0 -0
  232. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/monitor/triage.py +0 -0
  233. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/__init__.py +0 -0
  234. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/affinity.py +0 -0
  235. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/cache.py +0 -0
  236. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/energetics.py +0 -0
  237. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/genome.py +0 -0
  238. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/protein_design.py +0 -0
  239. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/reliability.py +0 -0
  240. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/rna.py +0 -0
  241. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/schema.py +0 -0
  242. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/status.py +0 -0
  243. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/structure.py +0 -0
  244. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/structure_run.py +0 -0
  245. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/oracles/vcell.py +0 -0
  246. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/__init__.py +0 -0
  247. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/ada_risk.py +0 -0
  248. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/antipeg_oracle.py +0 -0
  249. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/capsid_epitope_oracle.py +0 -0
  250. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/cargo.py +0 -0
  251. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/cargo_polish.py +0 -0
  252. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/chromosome.py +0 -0
  253. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery.py +0 -0
  254. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery_constraints.py +0 -0
  255. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery_immune.py +0 -0
  256. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery_immunology.py +0 -0
  257. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery_predict.py +0 -0
  258. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/delivery_vehicles.py +0 -0
  259. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/genotoxicity_oracle.py +0 -0
  260. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/immune_mhc2.py +0 -0
  261. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/innate_sensing.py +0 -0
  262. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/multiplex.py +0 -0
  263. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/optimize.py +0 -0
  264. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/pipeline.py +0 -0
  265. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/report.py +0 -0
  266. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/router.py +0 -0
  267. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/seroprevalence_oracle.py +0 -0
  268. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/planner/target_site.py +0 -0
  269. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/__init__.py +0 -0
  270. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/corpus.py +0 -0
  271. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/embed.py +0 -0
  272. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/ground.py +0 -0
  273. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/index.py +0 -0
  274. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/llm.py +0 -0
  275. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/qa.py +0 -0
  276. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rag/retrieve.py +0 -0
  277. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/__init__.py +0 -0
  278. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/evaluators.py +0 -0
  279. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/loader.py +0 -0
  280. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/schema.py +0 -0
  281. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/solver.py +0 -0
  282. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/rules/spec.py +0 -0
  283. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/__init__.py +0 -0
  284. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/audit.py +0 -0
  285. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/gate.py +0 -0
  286. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/policy.py +0 -0
  287. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/redteam.py +0 -0
  288. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/registry.py +0 -0
  289. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/screen.py +0 -0
  290. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/safety/standards.py +0 -0
  291. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/score/__init__.py +0 -0
  292. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/score/recalibrate.py +0 -0
  293. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/score/therapeutic.py +0 -0
  294. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/server/__init__.py +0 -0
  295. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/server/api.py +0 -0
  296. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/__init__.py +0 -0
  297. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/clarify.py +0 -0
  298. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/extract.py +0 -0
  299. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/__init__.py +0 -0
  300. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/cell.py +0 -0
  301. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/chem.py +0 -0
  302. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/feature.py +0 -0
  303. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/gene.py +0 -0
  304. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/locus.py +0 -0
  305. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/resolvers/phenotype.py +0 -0
  306. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/satisfy.py +0 -0
  307. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/service.py +0 -0
  308. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/spec/writespec.py +0 -0
  309. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/__init__.py +0 -0
  310. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/calibrate.py +0 -0
  311. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/data/__init__.py +0 -0
  312. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/data/position_effect.py +0 -0
  313. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/mechanistic.py +0 -0
  314. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/outcome.py +0 -0
  315. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/twin/position_effect.py +0 -0
  316. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/ui/__init__.py +0 -0
  317. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/ui/app.py +0 -0
  318. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/__init__.py +0 -0
  319. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/adapt_demo.py +0 -0
  320. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/agent_eval.py +0 -0
  321. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_adversarial_tasks.py +0 -0
  322. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_coscientist_tasks.py +0 -0
  323. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_graph_tasks.py +0 -0
  324. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_rule_tasks.py +0 -0
  325. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_trust_tasks.py +0 -0
  326. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/bench_writetype_tasks.py +0 -0
  327. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/blind_gsh_discovery.py +0 -0
  328. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/cargo_directionality.py +0 -0
  329. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/closed_loop.py +0 -0
  330. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/durability_baselines.py +0 -0
  331. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/experiment_design.py +0 -0
  332. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/expr_controls.py +0 -0
  333. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/forward_hypotheses.py +0 -0
  334. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/generative_design.py +0 -0
  335. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/guide_qc_demo.py +0 -0
  336. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/heldout_celltype_expr.py +0 -0
  337. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/immune_calibration.py +0 -0
  338. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/intent_specification.py +0 -0
  339. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/known_biology_expr.py +0 -0
  340. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/offtarget_energetics_eval.py +0 -0
  341. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/out_of_scope_refusal.py +0 -0
  342. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/outcome_calibration.py +0 -0
  343. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/outcome_prediction.py +0 -0
  344. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/paper3_benchmark.py +0 -0
  345. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/paper4_real_validation.py +0 -0
  346. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/paper4_validation.py +0 -0
  347. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/protocol_safety.py +0 -0
  348. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/safety_screening.py +0 -0
  349. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/selective_prediction.py +0 -0
  350. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/seq_vs_measured.py +0 -0
  351. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/target_site_controls.py +0 -0
  352. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/uncertainty_eval.py +0 -0
  353. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/ungrounded_baseline.py +0 -0
  354. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/within_locus_ranking.py +0 -0
  355. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/validate/writer_recovery.py +0 -0
  356. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/verify/__init__.py +0 -0
  357. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/verify/proof.py +0 -0
  358. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/verify/schema.py +0 -0
  359. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/verify/service.py +0 -0
  360. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/__init__.py +0 -0
  361. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/guide.py +0 -0
  362. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/llm.py +0 -0
  363. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/llm_provider.py +0 -0
  364. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/router.py +0 -0
  365. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/server.py +0 -0
  366. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/web/tools.py +0 -0
  367. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/__init__.py +0 -0
  368. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/chromatin_seq.py +0 -0
  369. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/durability.py +0 -0
  370. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/export_tracks.py +0 -0
  371. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/features.py +0 -0
  372. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/gsh_baseline.py +0 -0
  373. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/mesh_features.py +0 -0
  374. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/offtarget_assay.py +0 -0
  375. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/offtarget_data.py +0 -0
  376. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/offtarget_predict.py +0 -0
  377. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/ood.py +0 -0
  378. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/providers.py +0 -0
  379. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/safety.py +0 -0
  380. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/structure3d.py +0 -0
  381. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/uncertainty.py +0 -0
  382. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack/wgenome/writability.py +0 -0
  383. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/SOURCES.txt +0 -0
  384. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/dependency_links.txt +0 -0
  385. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/entry_points.txt +0 -0
  386. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/requires.txt +0 -0
  387. {pen_stack-7.1.6 → pen_stack-7.1.7}/pen_stack.egg-info/top_level.txt +0 -0
  388. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_phase0.json +0 -0
  389. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_phase1_5.json +0 -0
  390. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_phase2.json +0 -0
  391. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_phase3.json +0 -0
  392. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_a.json +0 -0
  393. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_acq.json +0 -0
  394. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_aldesign.json +0 -0
  395. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_alvalidate.json +0 -0
  396. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_atlas.json +0 -0
  397. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_b.json +0 -0
  398. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ba.json +0 -0
  399. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ba_v33.json +0 -0
  400. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ba_v45.json +0 -0
  401. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_bench.json +0 -0
  402. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_c.json +0 -0
  403. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_cal.json +0 -0
  404. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_calib.json +0 -0
  405. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_challenge.json +0 -0
  406. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_chat.json +0 -0
  407. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_cite.json +0 -0
  408. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_closedloop.json +0 -0
  409. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_continual.json +0 -0
  410. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_cosci2.json +0 -0
  411. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_crit.json +0 -0
  412. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ct.json +0 -0
  413. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_d.json +0 -0
  414. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_delivery.json +0 -0
  415. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_drift.json +0 -0
  416. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_e.json +0 -0
  417. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_env.json +0 -0
  418. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ep.json +0 -0
  419. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_epitope.json +0 -0
  420. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_expr2.json +0 -0
  421. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_f.json +0 -0
  422. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_frontend.json +0 -0
  423. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_g.json +0 -0
  424. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_gen.json +0 -0
  425. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_genotox.json +0 -0
  426. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_graph.json +0 -0
  427. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_h.json +0 -0
  428. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_hybrid.json +0 -0
  429. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_immune.json +0 -0
  430. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_immune2.json +0 -0
  431. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_ingest.json +0 -0
  432. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_innate.json +0 -0
  433. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_loop.json +0 -0
  434. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_manifest.json +0 -0
  435. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_mc.json +0 -0
  436. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_mcp.json +0 -0
  437. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_mech.json +0 -0
  438. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_mon.json +0 -0
  439. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_o.json +0 -0
  440. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_offtarget.json +0 -0
  441. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_openapi.json +0 -0
  442. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_oracle.json +0 -0
  443. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_orch.json +0 -0
  444. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_outcome.json +0 -0
  445. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_pareto.json +0 -0
  446. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_peg.json +0 -0
  447. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_penchat.json +0 -0
  448. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_plan.json +0 -0
  449. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_policy.json +0 -0
  450. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_profile.json +0 -0
  451. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_proto.json +0 -0
  452. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_r.json +0 -0
  453. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_redteam.json +0 -0
  454. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_route.json +0 -0
  455. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_screen.json +0 -0
  456. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_seroprev.json +0 -0
  457. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_simlab.json +0 -0
  458. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_twincal.json +0 -0
  459. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_uq.json +0 -0
  460. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_v.json +0 -0
  461. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_vcell.json +0 -0
  462. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_verify.json +0 -0
  463. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_writer.json +0 -0
  464. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_writespec.json +0 -0
  465. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/SHA256_LOCK_ws_wv.json +0 -0
  466. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/paper1.yaml +0 -0
  467. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/paper2.yaml +0 -0
  468. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/paper3.yaml +0 -0
  469. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/paper4.yaml +0 -0
  470. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/phase0.yaml +0 -0
  471. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_a.yaml +0 -0
  472. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_acq.yaml +0 -0
  473. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_aldesign.yaml +0 -0
  474. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_alvalidate.yaml +0 -0
  475. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_atlas.yaml +0 -0
  476. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_b.yaml +0 -0
  477. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ba.yaml +0 -0
  478. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ba_v33.yaml +0 -0
  479. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ba_v45.yaml +0 -0
  480. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_bench.yaml +0 -0
  481. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_c.yaml +0 -0
  482. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_cal.yaml +0 -0
  483. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_calib.yaml +0 -0
  484. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_challenge.yaml +0 -0
  485. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_chat.yaml +0 -0
  486. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_cite.yaml +0 -0
  487. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_closedloop.yaml +0 -0
  488. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_continual.yaml +0 -0
  489. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_cosci2.yaml +0 -0
  490. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_crit.yaml +0 -0
  491. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ct.yaml +0 -0
  492. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_d.yaml +0 -0
  493. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_delivery.yaml +0 -0
  494. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_drift.yaml +0 -0
  495. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_e.yaml +0 -0
  496. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_env.yaml +0 -0
  497. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ep.yaml +0 -0
  498. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_epitope.yaml +0 -0
  499. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_expr2.yaml +0 -0
  500. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_f.yaml +0 -0
  501. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_frontend.yaml +0 -0
  502. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_g.yaml +0 -0
  503. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_gen.yaml +0 -0
  504. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_genotox.yaml +0 -0
  505. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_graph.yaml +0 -0
  506. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_h.yaml +0 -0
  507. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_hybrid.yaml +0 -0
  508. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_immune.yaml +0 -0
  509. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_immune2.yaml +0 -0
  510. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_ingest.yaml +0 -0
  511. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_innate.yaml +0 -0
  512. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_loop.yaml +0 -0
  513. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_manifest.yaml +0 -0
  514. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_mc.yaml +0 -0
  515. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_mcp.yaml +0 -0
  516. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_mech.yaml +0 -0
  517. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_mon.yaml +0 -0
  518. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_o.yaml +0 -0
  519. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_offtarget.yaml +0 -0
  520. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_openapi.yaml +0 -0
  521. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_oracle.yaml +0 -0
  522. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_orch.yaml +0 -0
  523. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_outcome.yaml +0 -0
  524. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_pareto.yaml +0 -0
  525. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_peg.yaml +0 -0
  526. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_penchat.yaml +0 -0
  527. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_plan.yaml +0 -0
  528. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_policy.yaml +0 -0
  529. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_profile.yaml +0 -0
  530. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_proto.yaml +0 -0
  531. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_r.yaml +0 -0
  532. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_redteam.yaml +0 -0
  533. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_route.yaml +0 -0
  534. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_screen.yaml +0 -0
  535. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_seroprev.yaml +0 -0
  536. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_simlab.yaml +0 -0
  537. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_twincal.yaml +0 -0
  538. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_uq.yaml +0 -0
  539. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_v.yaml +0 -0
  540. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_vcell.yaml +0 -0
  541. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_verify.yaml +0 -0
  542. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_writer.yaml +0 -0
  543. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_writespec.yaml +0 -0
  544. {pen_stack-7.1.6 → pen_stack-7.1.7}/prereg/ws_wv.yaml +0 -0
  545. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/build_capsid_fitness.py +0 -0
  546. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/build_rag_corpus.py +0 -0
  547. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/calibrate_immune_axes.py +0 -0
  548. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/fetch_licensed_sources.py +0 -0
  549. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/offtarget_chromatin_incremental.py +0 -0
  550. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/offtarget_chromatin_matched.py +0 -0
  551. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/offtarget_chromatin_validation.py +0 -0
  552. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_build_atlas.py +0 -0
  553. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_build_durability.py +0 -0
  554. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_build_position_effect.py +0 -0
  555. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_build_writer_eff.py +0 -0
  556. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_export_tracks.py +0 -0
  557. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_safety_concordance.py +0 -0
  558. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_train_safety.py +0 -0
  559. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p1_validation_report.py +0 -0
  560. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p2_build_atlas.py +0 -0
  561. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p3_benchmark_report.py +0 -0
  562. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p4_genome_scan.py +0 -0
  563. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p52_build_genotox_oracle.py +0 -0
  564. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/p53_build_epitope_oracle.py +0 -0
  565. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/ws_b_report.py +0 -0
  566. {pen_stack-7.1.6 → pen_stack-7.1.7}/scripts/ws_c_report.py +0 -0
  567. {pen_stack-7.1.6 → pen_stack-7.1.7}/setup.cfg +0 -0
@@ -3,6 +3,31 @@
3
3
  All notable changes to PEN-STACK are documented here. This file follows
4
4
  [Keep a Changelog](https://keepachangelog.com/).
5
5
 
6
+ ## [7.1.7] - 2026-06-30 - Administration context (in-vivo / ex-vivo) now drives the immune profile
7
+
8
+ ### Fixed
9
+ - **The in-vivo / ex-vivo "Context" toggle had no effect on the immune profile.** It already drove the Generate
10
+ vehicle sweep (route-compatible vehicles) and the Verify germline-prohibition legality rule, but `immune_profile()`
11
+ ignored it, so the per-axis immune profile was identical for in-vivo and ex-vivo. It now applies a documented,
12
+ grounded administration modifier (`immune_profile._administration_modifier` / `_apply_administration`):
13
+ - **Pre-existing NAb is muted to "no barrier" (1.0) ex vivo.** Ex-vivo delivery (cells transduced in a dish and
14
+ washed before transplant) never exposes the vector to the patient's circulating antibodies, so pre-existing
15
+ anti-vector NAb does not gate eligibility — the eligibility fraction is 1.0 regardless of titer. The original
16
+ seroprevalence value is preserved (`pre_admin_value`) and the muting is explained in the axis note. This is the
17
+ same in-vivo/ex-vivo distinction the v5.1 `delivery_immunology` profile already encodes (`computed_ex_vivo_muted`).
18
+ - **CD8 capsid is flagged muted ex vivo** (systemic anti-capsid response minimal), but its intrinsic presentability
19
+ value is kept — transduced cells can still present capsid epitopes, a real residual concern, so no number is
20
+ fabricated.
21
+ - **Genotoxicity, innate, anti-PEG and the writer axes are unchanged** by administration context (insertional risk
22
+ and cargo/writer immunogenicity are intrinsic, not a function of circulating-antibody exposure).
23
+ - A `administration_modifier` block (parallel to the existing `route_modifier`) is added to the profile; the
24
+ `ImmuneProfileCard` shows an in-vivo/ex-vivo chip, a per-axis "ex-vivo muted" badge with the reason, and the
25
+ administration effect line. In-vivo and unspecified contexts leave every axis untouched (backward compatible).
26
+
27
+ ### Added
28
+ - `test_ws_profile.py`: `test_administration_context_mutes_vector_facing_axes_ex_vivo` (ex-vivo mutes pre-existing
29
+ NAb to 1.0 and flags CD8; in-vivo/unspecified are unchanged; genotoxicity is never muted by administration).
30
+
6
31
  ## [7.1.6] - 2026-06-30 - Immune axes wired end-to-end + Delivery folded into Design Studio
7
32
 
8
33
  ### Fixed
@@ -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: 7.1.6
4
+ version: 7.1.7
5
5
  date-released: 2026-06-30
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: 7.1.6
3
+ Version: 7.1.7
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__ = "7.1.6"
2
+ __version__ = "7.1.7"
@@ -48,6 +48,65 @@ def _route_modifier(route: str | None) -> dict | None:
48
48
  "note": "DOCUMENTED qualitative modifier on the realized response, NOT a quantified magnitude "
49
49
  "(the magnitude stays a known-unknown)."}
50
50
 
51
+
52
+ # v7.1.7 WS-ADMIN, administration-context (in-vivo vs ex-vivo) modifier on the VECTOR-FACING immune axes.
53
+ # Ex-vivo delivery (cells transduced in a dish and washed before transplant) does NOT expose the vector to the
54
+ # patient's circulating antibodies, so the pre-existing anti-vector NAb axis - a humoral, bloodstream eligibility
55
+ # barrier - does not gate ex-vivo use (it is muted to "no barrier"). The systemic anti-capsid CD8 response is also
56
+ # muted ex vivo (the host barely sees the capsid), but transduced cells can still present capsid epitopes (a real,
57
+ # residual concern), so that axis is FLAGGED muted without overwriting its intrinsic value. This is the SAME
58
+ # in-vivo/ex-vivo distinction the v5.1 delivery_immunology profile already encodes ("computed_ex_vivo_muted").
59
+ # A DOCUMENTED, mechanistic modifier - never a fabricated magnitude; the realized response stays a known-unknown.
60
+ _EX_VIVO_MUTED_AXES = ("preexisting_nab", "cd8_epitope")
61
+
62
+
63
+ def _is_ex_vivo(in_vivo) -> bool:
64
+ return str(in_vivo).strip().lower() in ("false", "0", "no", "ex_vivo", "ex vivo", "exvivo")
65
+
66
+
67
+ def _administration_modifier(in_vivo) -> dict | None:
68
+ """Documented administration-context modifier (in-vivo / ex-vivo) on the vector-facing axes, or None when the
69
+ design does not state an administration context. Qualitative, never a fabricated magnitude."""
70
+ if in_vivo is None:
71
+ return None
72
+ if _is_ex_vivo(in_vivo):
73
+ return {"context": "ex_vivo", "muted_axes": list(_EX_VIVO_MUTED_AXES),
74
+ "effect": "ex-vivo administration: the vector contacts cells in a dish and is washed before "
75
+ "transplant, so it is not exposed to the patient's circulating antibodies. Pre-existing "
76
+ "anti-vector NAb does not gate eligibility (humoral barrier bypassed); the systemic "
77
+ "anti-capsid CD8 response is muted, though transduced cells may still present capsid "
78
+ "epitopes (a residual, separate consideration).",
79
+ "note": "DOCUMENTED qualitative administration modifier (the same in-vivo/ex-vivo distinction as the "
80
+ "v5.1 delivery profile); the realized immune MAGNITUDE remains a known-unknown."}
81
+ return {"context": "in_vivo", "muted_axes": [],
82
+ "effect": "in-vivo (systemic / local) administration: the vector is exposed to the patient's "
83
+ "circulating antibodies and immune system, so the pre-existing NAb and anti-capsid CD8 "
84
+ "axes apply as reported.",
85
+ "note": "DOCUMENTED qualitative administration modifier; the realized magnitude is a known-unknown."}
86
+
87
+
88
+ def _apply_administration(axes: dict, admin: dict | None) -> None:
89
+ """Mutate the vector-facing axes in place for an ex-vivo administration context. Pre-existing NAb is muted to
90
+ 'no barrier' (eligibility not gated when the vector never meets circulating antibody); CD8 capsid is flagged
91
+ muted but its intrinsic value is kept (transduced cells can still present). No-op for in-vivo / unspecified."""
92
+ if not admin or admin.get("context") != "ex_vivo":
93
+ return
94
+ na = axes.get("preexisting_nab")
95
+ if na and na.get("available") and na.get("value") is not None:
96
+ na["pre_admin_value"] = na["value"]
97
+ na["value"] = 1.0
98
+ na["uncertainty"] = 0.0
99
+ na["administration_muted"] = True
100
+ na["note"] = (f"ex-vivo administration: pre-existing circulating anti-vector antibodies do not reach the "
101
+ f"vector (transduction in a dish), so pre-existing NAb does not gate eligibility "
102
+ f"(muted from {na['pre_admin_value']} to 1.0 = no barrier). " + (na.get("note") or ""))
103
+ cd = axes.get("cd8_epitope")
104
+ if cd and cd.get("available") and cd.get("value") is not None:
105
+ cd["administration_muted"] = True
106
+ cd["note"] = ("ex-vivo administration: the systemic anti-capsid CD8 response is muted (minimal host capsid "
107
+ "exposure); transduced cells may still present capsid epitopes, so the intrinsic value is "
108
+ "kept. " + (cd.get("note") or ""))
109
+
51
110
  # headline score key inside each oracle's value dict, per axis.
52
111
  _SCORE_KEY = {"genotoxicity": "genotox_score", "cd8_epitope": "capsid_immune_score",
53
112
  "innate": "innate_score", "preexisting_nab": "preexisting_score",
@@ -162,6 +221,11 @@ def immune_profile(design: dict) -> dict:
162
221
  "no bundled writer sequence -> abstains", "ada_writer"),
163
222
  }
164
223
 
224
+ # v7.1.7 administration context: ex-vivo delivery bypasses the patient's circulating antibodies, so the
225
+ # vector-facing axes (pre-existing NAb, capsid CD8) are muted - documented, not a fabricated magnitude.
226
+ admin = _administration_modifier(design.get("in_vivo"))
227
+ _apply_administration(axes, admin)
228
+
165
229
  # writer-as-antigen comparison: for non-viral delivery (no foreign capsid) or a foreign writer outscoring the
166
230
  # capsid, the WRITER is the dominant antigen, the v6.9 insight, never collapsed into the other axes.
167
231
  dominant = None
@@ -180,6 +244,7 @@ def immune_profile(design: dict) -> dict:
180
244
  "writer_as_antigen": ({**writer_card, "dominant_antigen": dominant,
181
245
  "writer_dominant_risk": writer_dominant_risk} if writer_card else None),
182
246
  "route_modifier": _route_modifier(design.get("route")), # v5.6 WS-EXT documented route modifier (or None)
247
+ "administration_modifier": admin, # v7.1.7 in-vivo / ex-vivo documented modifier on the vector-facing axes
183
248
  "known_unknowns": KNOWN_UNKNOWNS,
184
249
  "no_fabrication": True,
185
250
  "note": ("relative immune-risk SCREEN across axes (now incl. CD4/MHC-II + ADA over the writer enzyme); each "
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pen-stack
3
- Version: 7.1.6
3
+ Version: 7.1.7
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 = "7.1.6"
7
+ version = "7.1.7"
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
File without changes