AbstractRuntime 0.18.0__tar.gz → 0.18.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (907) hide show
  1. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/CHANGELOG.md +11 -0
  2. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/PKG-INFO +7 -2
  3. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/README.md +6 -1
  4. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/digital-identity.md +2 -1
  5. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/replay.md +5 -1
  6. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/llms-full.txt +13 -3
  7. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/llms.txt +1 -1
  8. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/pyproject.toml +1 -1
  9. abstractruntime-0.18.1/release-notes.md +8 -0
  10. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/skills/abstractruntime/SKILL.md +2 -2
  11. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/view.py +42 -2
  12. abstractruntime-0.18.1/tests/test_replay_public_update_identity_ref.py +97 -0
  13. abstractruntime-0.18.0/release-notes.md +0 -86
  14. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/.github/workflows/changelog.yml +0 -0
  15. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/.github/workflows/ci.yml +0 -0
  16. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/.github/workflows/release.yml +0 -0
  17. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/.gitignore +0 -0
  18. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/ACKNOWLEDGMENTS.md +0 -0
  19. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/CODE_OF_CONDUCT.md +0 -0
  20. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/CONTRIBUTING.md +0 -0
  21. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/LICENSE +0 -0
  22. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/ROADMAP.md +0 -0
  23. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/SECURITY.md +0 -0
  24. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/changelog.d/README.md +0 -0
  25. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/README.md +0 -0
  26. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
  27. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
  28. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
  29. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
  30. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
  31. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
  32. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
  33. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0008_integration_facades_are_the_complete_host_surface.md +0 -0
  34. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0010_one_replay_many_views.md +0 -0
  35. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/0011_memory_facade_is_the_complete_host_surface_for_abstractmemory.md +0 -0
  36. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/adr/README.md +0 -0
  37. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/api.md +0 -0
  38. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/architecture.md +0 -0
  39. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/artifacts.md +0 -0
  40. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/automations.md +0 -0
  41. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/README.md +0 -0
  42. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/001_runtime_kernel.md +0 -0
  43. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
  44. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
  45. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
  46. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
  47. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
  48. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
  49. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
  50. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/003_wait_primitives.md +0 -0
  51. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
  52. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
  53. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
  54. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
  55. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/004_scheduler_driver.md +0 -0
  56. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
  57. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
  58. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
  59. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/009_artifact_store.md +0 -0
  60. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/010_examples_and_composition.md +0 -0
  61. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/011_subworkflow_support.md +0 -0
  62. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
  63. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
  64. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
  65. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
  66. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
  67. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
  68. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
  69. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
  70. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
  71. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
  72. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
  73. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
  74. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
  75. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
  76. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0847_automations_v1_controller_contracts_occurrences_triggers.md +0 -0
  77. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0851_per_account_voice_stores.md +0 -0
  78. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0852_capability_refusals_are_not_retried.md +0 -0
  79. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0855_prefix_stability_contract_of_consecutive_llm_calls.md +0 -0
  80. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0856_memory_facade_and_ledger_provenance.md +0 -0
  81. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0862_is_empty_accepts_lists.md +0 -0
  82. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0863_index_build_never_loses_a_run_created_during_it.md +0 -0
  83. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/completed/0864_facade_catalog_hub_search_pages.md +0 -0
  84. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
  85. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
  86. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
  87. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
  88. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
  89. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
  90. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
  91. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
  92. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/004_tests.md +0 -0
  93. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/005_docs_updates.md +0 -0
  94. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
  95. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
  96. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
  97. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/README.md +0 -0
  98. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
  99. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
  100. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
  101. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
  102. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
  103. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
  104. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
  105. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
  106. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
  107. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
  108. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
  109. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
  110. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0848_automations_v2_external_event_inbox_and_run_triggers.md +0 -0
  111. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0853_session_tool_policy_before_the_approval_wait.md +0 -0
  112. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0854_replay_view.md +0 -0
  113. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0857_entity_direct_memory_writes_provenance.md +0 -0
  114. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0858_typed_runs_run_type_stamped_at_start.md +0 -0
  115. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0859_replay_view_ephemeral_text_deltas.md +0 -0
  116. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/0866_queued_state_in_the_ledger_and_pools_lend_never_build.md +0 -0
  117. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
  118. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
  119. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_portability/README.md +0 -0
  120. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
  121. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
  122. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
  123. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
  124. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
  125. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
  126. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
  127. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
  128. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
  129. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
  130. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
  131. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
  132. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
  133. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
  134. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
  135. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
  136. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
  137. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
  138. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
  139. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
  140. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0849_conversation_search_tool_usage_outputs_and_thinking.md +0 -0
  141. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0850_growing_automation_history_out_of_the_controller_ledger.md +0 -0
  142. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0860_replay_view_stop_wording_from_the_ledger.md +0 -0
  143. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0861_replay_view_activity_tool_sandbox_and_call_timings.md +0 -0
  144. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0862_replay_view_message_artifacts_exclude_bookkeeping.md +0 -0
  145. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/0865_model_loaded_ledger_event.md +0 -0
  146. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
  147. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
  148. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
  149. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
  150. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
  151. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
  152. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
  153. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
  154. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
  155. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/email.md +0 -0
  156. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/entity-runtime.md +0 -0
  157. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/evidence.md +0 -0
  158. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/faq.md +0 -0
  159. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/getting-started.md +0 -0
  160. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/integrations/abstractcore.md +0 -0
  161. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/integrations/abstractmemory.md +0 -0
  162. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/limits.md +0 -0
  163. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/manual_testing.md +0 -0
  164. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/mcp-worker.md +0 -0
  165. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/proposal.md +0 -0
  166. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/provenance.md +0 -0
  167. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/snapshots.md +0 -0
  168. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/tool-approval.md +0 -0
  169. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/tools-comms.md +0 -0
  170. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/track-record.md +0 -0
  171. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/troubleshooting.md +0 -0
  172. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/docs/workflow-bundles.md +0 -0
  173. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/01_hello_world.py +0 -0
  174. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/02_ask_user.py +0 -0
  175. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/03_wait_until.py +0 -0
  176. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/04_multi_step.py +0 -0
  177. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/05_persistence.py +0 -0
  178. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/06_llm_integration.py +0 -0
  179. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/07_react_agent.py +0 -0
  180. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/examples/README.md +0 -0
  181. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/mkdocs.yml +0 -0
  182. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/pytest.ini +0 -0
  183. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/scripts/backfill_diary_edges.py +0 -0
  184. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/scripts/changelog.py +0 -0
  185. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/scripts/generate_llms_full.py +0 -0
  186. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/scripts/regen_replay_conformance.py +0 -0
  187. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/__init__.py +0 -0
  188. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automation_queries.py +0 -0
  189. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/__init__.py +0 -0
  190. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/adapters.py +0 -0
  191. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/attention.py +0 -0
  192. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/bundle.py +0 -0
  193. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/bundles/automation-controller/flows/controller.json +0 -0
  194. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/bundles/automation-controller/manifest.json +0 -0
  195. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/commands.py +0 -0
  196. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/consumers.py +0 -0
  197. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/controller.py +0 -0
  198. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/ledger.py +0 -0
  199. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/models.py +0 -0
  200. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/samples.py +0 -0
  201. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/service.py +0 -0
  202. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/automations/wakes.py +0 -0
  203. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/conversation_search.py +0 -0
  204. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/__init__.py +0 -0
  205. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/config.py +0 -0
  206. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/effect_cancellation.py +0 -0
  207. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/event_keys.py +0 -0
  208. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/health.py +0 -0
  209. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/live_deltas.py +0 -0
  210. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/models.py +0 -0
  211. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/policy.py +0 -0
  212. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/progress_channel.py +0 -0
  213. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/publish.py +0 -0
  214. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/questions.py +0 -0
  215. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/run_attribution.py +0 -0
  216. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/run_identity.py +0 -0
  217. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/run_lifecycle.py +0 -0
  218. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/run_origin.py +0 -0
  219. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/runtime.py +0 -0
  220. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/spec.py +0 -0
  221. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/step_context.py +0 -0
  222. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/tool_scope.py +0 -0
  223. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/core/vars.py +0 -0
  224. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/documents/__init__.py +0 -0
  225. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/documents/charts.py +0 -0
  226. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/documents/docx.py +0 -0
  227. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/documents/pdf.py +0 -0
  228. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/__init__.py +0 -0
  229. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/actions.py +0 -0
  230. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/automations.py +0 -0
  231. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/binding.py +0 -0
  232. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/feeder.py +0 -0
  233. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/frame.py +0 -0
  234. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/email/inbox.py +0 -0
  235. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/evidence/__init__.py +0 -0
  236. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/evidence/recorder.py +0 -0
  237. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/history_bundle.py +0 -0
  238. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/__init__.py +0 -0
  239. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/acquaintances.py +0 -0
  240. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/act_only.py +0 -0
  241. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/chat.py +0 -0
  242. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/communities.py +0 -0
  243. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/diary.py +0 -0
  244. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/digest.py +0 -0
  245. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/digital_identity.py +0 -0
  246. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/entity_runtime.py +0 -0
  247. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/fingerprint.py +0 -0
  248. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/lease.py +0 -0
  249. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/life.py +0 -0
  250. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/memory_reader.py +0 -0
  251. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/night_voice.py +0 -0
  252. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/phase_graph.py +0 -0
  253. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/phase_spec.py +0 -0
  254. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/prelude.py +0 -0
  255. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/prompt_overlay.py +0 -0
  256. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/reflection.py +0 -0
  257. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
  258. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/substrate.py +0 -0
  259. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/tool_effects.py +0 -0
  260. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/tool_policy.py +0 -0
  261. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/tools.py +0 -0
  262. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/track_record.py +0 -0
  263. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/identity/visit_workflow.py +0 -0
  264. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/__init__.py +0 -0
  265. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
  266. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
  267. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/command_sandbox_host.py +0 -0
  268. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
  269. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/config_facade.py +0 -0
  270. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
  271. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
  272. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
  273. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
  274. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
  275. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +0 -0
  276. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/email_facade.py +0 -0
  277. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
  278. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
  279. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
  280. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/llm_client.py +0 -0
  281. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
  282. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
  283. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/mcp_facade.py +0 -0
  284. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
  285. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
  286. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
  287. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
  288. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
  289. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/server_facade.py +0 -0
  290. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
  291. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/structured_facade.py +0 -0
  292. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/structured_output.py +0 -0
  293. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
  294. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
  295. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/tool_effects.py +0 -0
  296. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
  297. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
  298. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/voice_facade.py +0 -0
  299. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/voice_library.py +0 -0
  300. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
  301. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
  302. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
  303. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
  304. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
  305. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/memory_facade.py +0 -0
  306. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
  307. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/mail_verbs.py +0 -0
  308. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/__init__.py +0 -0
  309. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/active_context.py +0 -0
  310. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/active_memory.py +0 -0
  311. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/compaction.py +0 -0
  312. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/kg_packets.py +0 -0
  313. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/memact_composer.py +0 -0
  314. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/recall_levels.py +0 -0
  315. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/memory/token_budget.py +0 -0
  316. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/rendering/__init__.py +0 -0
  317. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
  318. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/rendering/json_stringify.py +0 -0
  319. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/__init__.py +0 -0
  320. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/__init__.py +0 -0
  321. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/expected_view.json +0 -0
  322. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/manifest.json +0 -0
  323. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/records.json +0 -0
  324. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/runs.json +0 -0
  325. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a_delegated_child_approval/expected_view.json +0 -0
  326. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a_delegated_child_approval/manifest.json +0 -0
  327. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a_delegated_child_approval/records.json +0 -0
  328. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/a_delegated_child_approval/runs.json +0 -0
  329. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/b_timer_without_resume/expected_view.json +0 -0
  330. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/b_timer_without_resume/manifest.json +0 -0
  331. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/b_timer_without_resume/records.json +0 -0
  332. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/b_timer_without_resume/runs.json +0 -0
  333. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/expected_view.json +0 -0
  334. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/manifest.json +0 -0
  335. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/records.json +0 -0
  336. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/runs.json +0 -0
  337. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/d_cancellation/expected_view.json +0 -0
  338. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/d_cancellation/manifest.json +0 -0
  339. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/d_cancellation/records.json +0 -0
  340. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/d_cancellation/runs.json +0 -0
  341. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/expected_view.json +0 -0
  342. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/manifest.json +0 -0
  343. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/records.json +0 -0
  344. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/runs.json +0 -0
  345. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e_structured_output_agents/expected_view.json +0 -0
  346. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e_structured_output_agents/manifest.json +0 -0
  347. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e_structured_output_agents/records.json +0 -0
  348. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/e_structured_output_agents/runs.json +0 -0
  349. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/f_windowed_slim/expected_view.json +0 -0
  350. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/f_windowed_slim/manifest.json +0 -0
  351. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/f_windowed_slim/records.json +0 -0
  352. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/f_windowed_slim/runs.json +0 -0
  353. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/g_ask_user/expected_view.json +0 -0
  354. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/g_ask_user/manifest.json +0 -0
  355. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/g_ask_user/records.json +0 -0
  356. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/g_ask_user/runs.json +0 -0
  357. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/h_denied_approval/expected_view.json +0 -0
  358. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/h_denied_approval/manifest.json +0 -0
  359. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/h_denied_approval/records.json +0 -0
  360. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/h_denied_approval/runs.json +0 -0
  361. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/i_wait_kinds/expected_view.json +0 -0
  362. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/i_wait_kinds/manifest.json +0 -0
  363. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/i_wait_kinds/records.json +0 -0
  364. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/i_wait_kinds/runs.json +0 -0
  365. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/expected_view.json +0 -0
  366. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/manifest.json +0 -0
  367. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/records.json +0 -0
  368. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/runs.json +0 -0
  369. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/k_nested_delegation/expected_view.json +0 -0
  370. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/k_nested_delegation/manifest.json +0 -0
  371. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/k_nested_delegation/records.json +0 -0
  372. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/k_nested_delegation/runs.json +0 -0
  373. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/l_answer_then_completion/expected_view.json +0 -0
  374. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/l_answer_then_completion/manifest.json +0 -0
  375. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/l_answer_then_completion/records.json +0 -0
  376. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/l_answer_then_completion/runs.json +0 -0
  377. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/m_session_tool_policy/expected_view.json +0 -0
  378. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/m_session_tool_policy/manifest.json +0 -0
  379. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/m_session_tool_policy/records.json +0 -0
  380. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/conformance/m_session_tool_policy/runs.json +0 -0
  381. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/delta.py +0 -0
  382. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/replay/executions.py +0 -0
  383. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/scheduler/__init__.py +0 -0
  384. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/scheduler/convenience.py +0 -0
  385. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/scheduler/multi_store.py +0 -0
  386. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/scheduler/registry.py +0 -0
  387. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/scheduler/scheduler.py +0 -0
  388. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/session_history.py +0 -0
  389. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/session_turns.py +0 -0
  390. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/__init__.py +0 -0
  391. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/artifacts.py +0 -0
  392. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/base.py +0 -0
  393. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/change_ring.py +0 -0
  394. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/commands.py +0 -0
  395. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/in_memory.py +0 -0
  396. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/json_files.py +0 -0
  397. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/lease.py +0 -0
  398. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/ledger_chain.py +0 -0
  399. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/ledger_slim.py +0 -0
  400. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/observable.py +0 -0
  401. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/offloading.py +0 -0
  402. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/serialize.py +0 -0
  403. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/session_tool_policy.py +0 -0
  404. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/snapshots.py +0 -0
  405. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/sqlite.py +0 -0
  406. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/storage/steer_sidecar.py +0 -0
  407. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/__init__.py +0 -0
  408. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/cloudevents.py +0 -0
  409. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/connection_events.py +0 -0
  410. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/connections.py +0 -0
  411. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/email_received.py +0 -0
  412. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/event_frame.py +0 -0
  413. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/feed.py +0 -0
  414. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/manual.py +0 -0
  415. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/protocol.py +0 -0
  416. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/registry.py +0 -0
  417. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/schedule.py +0 -0
  418. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/triggers/webhook.py +0 -0
  419. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/turn_grounding.py +0 -0
  420. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/utils/__init__.py +0 -0
  421. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/utils/atomic_files.py +0 -0
  422. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/utils/file_filters.py +0 -0
  423. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/utils/workspace_paths.py +0 -0
  424. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
  425. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
  426. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
  427. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
  428. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
  429. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
  430. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
  431. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
  432. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
  433. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
  434. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
  435. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
  436. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
  437. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
  438. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
  439. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
  440. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
  441. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
  442. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
  443. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
  444. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/loop_back_check.py +0 -0
  445. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/loop_limit_lowering.py +0 -0
  446. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
  447. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
  448. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
  449. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/visualflow_compiler/visual/reroute_lowering.py +0 -0
  450. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
  451. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/workflow_bundle/models.py +0 -0
  452. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/workflow_bundle/packer.py +0 -0
  453. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/workflow_bundle/reader.py +0 -0
  454. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/src/abstractruntime/workflow_bundle/registry.py +0 -0
  455. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/README.md +0 -0
  456. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/automation_harness.py +0 -0
  457. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/conftest.py +0 -0
  458. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/email_wp2_support.py +0 -0
  459. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/feeds/atom.xml +0 -0
  460. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/feeds/rdf-not-a-feed.xml +0 -0
  461. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/feeds/rss1-malformed.xml +0 -0
  462. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/feeds/rss1.xml +0 -0
  463. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/feeds/rss2.xml +0 -0
  464. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/schedule_v1_corpus.json +0 -0
  465. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/visualflow/compare_text_operands.json +0 -0
  466. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/visualflow/typed_literals_flow.json +0 -0
  467. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/fixtures/visualflow/typed_literals_flow.legacy.json +0 -0
  468. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/live_email/conftest.py +0 -0
  469. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/live_email/live_email_support.py +0 -0
  470. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/live_email/test_email_live_runtime.py +0 -0
  471. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/media_endpoint_profile_probe.py +0 -0
  472. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_comms_facade.py +0 -0
  473. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_discovery_facade.py +0 -0
  474. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_host_facade.py +0 -0
  475. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_run_facade.py +0 -0
  476. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_server_facade.py +0 -0
  477. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_structured_facade.py +0 -0
  478. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_abstractcore_telegram_facade.py +0 -0
  479. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_active_consumers_index.py +0 -0
  480. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_active_context_policy.py +0 -0
  481. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_active_index.py +0 -0
  482. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_active_memory.py +0 -0
  483. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_agora_agent_alias_identity.py +0 -0
  484. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_agora_tools_http.py +0 -0
  485. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_analyze_media_addressing_and_walling.py +0 -0
  486. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_answer_user_effect.py +0 -0
  487. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_artifact_session_candidates.py +0 -0
  488. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_artifacts.py +0 -0
  489. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_calendar_schedule.py +0 -0
  490. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_commands.py +0 -0
  491. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_controller.py +0 -0
  492. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_controller_recovery.py +0 -0
  493. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_definition.py +0 -0
  494. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_discussion_isolation.py +0 -0
  495. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_email_results.py +0 -0
  496. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_growing_context.py +0 -0
  497. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_index.py +0 -0
  498. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_list_reads.py +0 -0
  499. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_named_policy_compiler.py +0 -0
  500. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_next_fire.py +0 -0
  501. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_occurrence_error.py +0 -0
  502. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_occurrence_input_resolver.py +0 -0
  503. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_occurrence_recovery.py +0 -0
  504. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_replay_read_only.py +0 -0
  505. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_retry.py +0 -0
  506. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_session_turns.py +0 -0
  507. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_status.py +0 -0
  508. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_automation_tool_approval.py +0 -0
  509. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_browser_probe_target_walling.py +0 -0
  510. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_budget_law_no_unrequested_caps.py +0 -0
  511. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_capability_default_reasoning.py +0 -0
  512. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_changelog_fragments.py +0 -0
  513. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_chat_summarizer_integration.py +0 -0
  514. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_code_node_imports.py +0 -0
  515. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_code_node_restricted_python.py +0 -0
  516. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_command_sandbox_host_facade.py +0 -0
  517. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_command_store.py +0 -0
  518. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_compaction_helpers.py +0 -0
  519. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_compaction_summarizer_route.py +0 -0
  520. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_config_facade_model_contexts.py +0 -0
  521. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_config_facade_models_engines.py +0 -0
  522. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_config_facade_voice_input_hint.py +0 -0
  523. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_control_adapter_while.py +0 -0
  524. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_controller_bundle_packaged.py +0 -0
  525. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_conversation_search.py +0 -0
  526. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_conversational_questions.py +0 -0
  527. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_crash_ordering_inversions.py +0 -0
  528. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_create_if_absent.py +0 -0
  529. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_data_registry_facade.py +0 -0
  530. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_decision_facade_and_node.py +0 -0
  531. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_decision_output.py +0 -0
  532. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_model_warmup_switch.py +0 -0
  533. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_camera_gating.py +0 -0
  534. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_comms_gating.py +0 -0
  535. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_include_skim_files.py +0 -0
  536. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_include_skim_folders.py +0 -0
  537. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_include_skim_web.py +0 -0
  538. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_default_tools_search_files_executor.py +0 -0
  539. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_diary_capture.py +0 -0
  540. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_diary_write_rescue.py +0 -0
  541. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_digital_identity.py +0 -0
  542. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_directory_lease.py +0 -0
  543. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_disabled_toolsets_seam.py +0 -0
  544. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_discovery_facade_model_errors.py +0 -0
  545. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_discovery_survives_unbuildable_default.py +0 -0
  546. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_discovery_tts_unavailable_reason.py +0 -0
  547. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_discovery_voice_openai_api_key.py +0 -0
  548. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_discussion_session_anchor.py +0 -0
  549. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_document_markdown_tables.py +0 -0
  550. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_document_renderers_hr_quote.py +0 -0
  551. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_duck_typed_store_session_attribution.py +0 -0
  552. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_durable_toolsets.py +0 -0
  553. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_durable_write_discipline.py +0 -0
  554. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
  555. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_effect_cancellation.py +0 -0
  556. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_effect_interrupted.py +0 -0
  557. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_effect_issuance_idempotency.py +0 -0
  558. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_effect_payload_stays_json_serializable.py +0 -0
  559. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_election_consequence_teaching.py +0 -0
  560. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_binding_and_refiner.py +0 -0
  561. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_feeder_batched.py +0 -0
  562. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_feeder_flags.py +0 -0
  563. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_gate_fixes.py +0 -0
  564. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_inbox_and_trigger.py +0 -0
  565. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_received_mailbox_id.py +0 -0
  566. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_regate_fixes.py +0 -0
  567. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_review_fixes.py +0 -0
  568. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_self_trigger_loop.py +0 -0
  569. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_stream_consumers.py +0 -0
  570. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_email_toolset_and_walls.py +0 -0
  571. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_emergence_experiment.py +0 -0
  572. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_emit_event_uses_wait_index.py +0 -0
  573. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_emit_event_without_workflow_registry.py +0 -0
  574. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_endpoint_profile_media_end_to_end.py +0 -0
  575. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_endpoint_profile_media_in_process.py +0 -0
  576. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_endpoint_profile_media_specs_keep_provider.py +0 -0
  577. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_endpoint_profile_route_context.py +0 -0
  578. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_awake_memory_fixes.py +0 -0
  579. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_brain_effects.py +0 -0
  580. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_chat_driver.py +0 -0
  581. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_chat_tools_reflection.py +0 -0
  582. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_diary.py +0 -0
  583. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_execute_tool.py +0 -0
  584. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_fetch_url_tool.py +0 -0
  585. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_history_window.py +0 -0
  586. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_life_loop.py +0 -0
  587. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_memory_richness.py +0 -0
  588. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_phase_graph_conformance.py +0 -0
  589. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_react_visit_window.py +0 -0
  590. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_recent_memories.py +0 -0
  591. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_runtime.py +0 -0
  592. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_search_memory.py +0 -0
  593. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
  594. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_substrate_resolution.py +0 -0
  595. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_visit_honesty.py +0 -0
  596. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_workspace_cap.py +0 -0
  597. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_entity_workspace_tools.py +0 -0
  598. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_event_index_cross_process.py +0 -0
  599. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_event_wait_index.py +0 -0
  600. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
  601. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_evidence_recorder.py +0 -0
  602. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
  603. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_execute_command_output_offload.py +0 -0
  604. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_execution_capability_discovery.py +0 -0
  605. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_explicit_eject_other_clients.py +0 -0
  606. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_factory_default_retry_policy.py +0 -0
  607. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
  608. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_format_repair_nudge.py +0 -0
  609. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_fresh_install_no_provider.py +0 -0
  610. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_gateway_facades_c4899.py +0 -0
  611. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_git_read_only_refiner.py +0 -0
  612. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_hf_process_residency_merge.py +0 -0
  613. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_history_window_multimodal.py +0 -0
  614. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_hot_path_store_reads.py +0 -0
  615. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_identity_acquaintances.py +0 -0
  616. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_identity_track_record.py +0 -0
  617. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_indexed_idempotency_lookup.py +0 -0
  618. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_integration_abstractcore.py +0 -0
  619. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_integrations_abstractcore.py +0 -0
  620. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_json_file_run_store_change_token_after_build.py +0 -0
  621. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_json_file_run_store_children_index.py +0 -0
  622. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_json_file_run_store_index_build_race.py +0 -0
  623. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_json_run_cache_bound.py +0 -0
  624. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_json_store_scan_memo.py +0 -0
  625. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_jsonl_ledger_recovery.py +0 -0
  626. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_jsonl_ledger_seq_cross_process.py +0 -0
  627. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_jsonl_row_index.py +0 -0
  628. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_kg_learn_and_recall_contract.py +0 -0
  629. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_ledger_chain.py +0 -0
  630. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_ledger_cursor_invariants.py +0 -0
  631. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_ledger_get_record.py +0 -0
  632. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_ledger_record_slimming.py +0 -0
  633. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_ledger_subscription.py +0 -0
  634. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_live_token_deltas.py +0 -0
  635. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_media_artifact_refs.py +0 -0
  636. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
  637. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
  638. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_payload_shape_refusal.py +0 -0
  639. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_prefix_stability_contract.py +0 -0
  640. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_requires_prompt.py +0 -0
  641. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_response_schema_normalization.py +0 -0
  642. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_structured_output_fallback.py +0 -0
  643. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_text_phase_progress.py +0 -0
  644. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_truncation_retry_contract.py +0 -0
  645. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_use_context_appends_turn.py +0 -0
  646. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
  647. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_client_grounding_tail.py +0 -0
  648. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_client_media_artifacts.py +0 -0
  649. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_client_system_context.py +0 -0
  650. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_client_tool_call_parsing.py +0 -0
  651. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_retry_classification.py +0 -0
  652. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_llm_streaming_on_token.py +0 -0
  653. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_local_helper_tool_exposure.py +0 -0
  654. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_local_residency_host_sweep.py +0 -0
  655. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
  656. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mail_verbs.py +0 -0
  657. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mailbox_index.py +0 -0
  658. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_max_iterations_ceiling.py +0 -0
  659. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mcp_remote_tool_executor.py +0 -0
  660. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mcp_runs_untrusted_and_facade.py +0 -0
  661. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mcp_worker_logging.py +0 -0
  662. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mcp_worker_security.py +0 -0
  663. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mcp_worker_stdio.py +0 -0
  664. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_media_artifact_resolution.py +0 -0
  665. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_media_capability_default_routing.py +0 -0
  666. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_media_host_endpoint_resolver.py +0 -0
  667. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_media_only_requests_skip_text_client.py +0 -0
  668. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_media_subprocess.py +0 -0
  669. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memact_composer_from_kg_result.py +0 -0
  670. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_appraise_handler.py +0 -0
  671. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_communities.py +0 -0
  672. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_facade.py +0 -0
  673. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
  674. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_packets.py +0 -0
  675. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_predicate_aliasing.py +0 -0
  676. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_query_packetization_restart.py +0 -0
  677. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
  678. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
  679. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_note_effect.py +0 -0
  680. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_query_effect.py +0 -0
  681. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_query_rich_filters.py +0 -0
  682. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_revise.py +0 -0
  683. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
  684. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_seam_handlers.py +0 -0
  685. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_seam_sqlite_durability.py +0 -0
  686. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_step_provenance.py +0 -0
  687. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_memory_tag_effect.py +0 -0
  688. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mlx_generation_serialization.py +0 -0
  689. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_mlx_process_residency_merge.py +0 -0
  690. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_eject_cancel.py +0 -0
  691. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_idle_unload_relay.py +0 -0
  692. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_residency_clean_switch.py +0 -0
  693. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_residency_control_plane.py +0 -0
  694. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
  695. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_residency_lock_set.py +0 -0
  696. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_model_residency_release_and_readable_holders.py +0 -0
  697. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_multi_store_scheduler.py +0 -0
  698. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_multimodal_abstractcore_integration.py +0 -0
  699. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_native_mlx_application_wiring.py +0 -0
  700. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_native_mlx_execution_controls_live.py +0 -0
  701. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_native_tool_channel.py +0 -0
  702. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_night_voice.py +0 -0
  703. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_no_default_provider_refusal_ux.py +0 -0
  704. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_occurrence_named_inputs.py +0 -0
  705. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_occurrence_samples.py +0 -0
  706. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_offload_answer_chain_c4978.py +0 -0
  707. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
  708. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_offloading.py +0 -0
  709. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_packaging_extras.py +0 -0
  710. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_parallel_readonly_tool_execution.py +0 -0
  711. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_pause_resume.py +0 -0
  712. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_pdf_unicode_rendering.py +0 -0
  713. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_personal_cycle.py +0 -0
  714. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_phantom_attachment_index.py +0 -0
  715. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_phase_graph_artifact_control.py +0 -0
  716. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_phase_graph_obedience.py +0 -0
  717. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_phase_vocabulary_migration.py +0 -0
  718. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
  719. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_cache_export_import.py +0 -0
  720. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
  721. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_cache_modules.py +0 -0
  722. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_cache_posture_inheritance.py +0 -0
  723. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
  724. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_prompt_overlay.py +0 -0
  725. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_provider_endpoint_profile_resolution.py +0 -0
  726. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_provider_pin_routing_isolation.py +0 -0
  727. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_public_action_approval_context.py +0 -0
  728. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_publish_event.py +0 -0
  729. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_queryable_run_store.py +0 -0
  730. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_r12_workspace_sandbox.py +0 -0
  731. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
  732. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_read_idle_threading.py +0 -0
  733. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_readoption_experiment.py +0 -0
  734. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_real_integration.py +0 -0
  735. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_realize_election.py +0 -0
  736. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_recall_levels_policy.py +0 -0
  737. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_remote_client_cancel.py +0 -0
  738. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_remote_llm_client.py +0 -0
  739. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_remote_speculation_defaults.py +0 -0
  740. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_rendering_agent_trace_report.py +0 -0
  741. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_rendering_json_stringify.py +0 -0
  742. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_conformance.py +0 -0
  743. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_conformance_package.py +0 -0
  744. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_cursor_token.py +0 -0
  745. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_delta_cost.py +0 -0
  746. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_invariants.py +0 -0
  747. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_public_updates.py +0 -0
  748. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_review_findings.py +0 -0
  749. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_replay_tool_policy.py +0 -0
  750. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_report_branding.py +0 -0
  751. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_residency_fit_refusal_broadcast.py +0 -0
  752. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_resident_media_generation.py +0 -0
  753. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_resume_concurrent_same_wait.py +0 -0
  754. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_retry_idempotency.py +0 -0
  755. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_history_bundle.py +0 -0
  756. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_index_workspace_root.py +0 -0
  757. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_mutation_lock.py +0 -0
  758. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_origin.py +0 -0
  759. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_scoped_tool_policy.py +0 -0
  760. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_store_change_token.py +0 -0
  761. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_run_tool_scope_ceiling.py +0 -0
  762. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_browser_session_boundary.py +0 -0
  763. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
  764. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_default_provider_model_refresh.py +0 -0
  765. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_effect_invocation_trace.py +0 -0
  766. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_health_and_bounded_vars.py +0 -0
  767. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_install_boundary.py +0 -0
  768. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
  769. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_node_traces.py +0 -0
  770. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_start_seeds_tool_support.py +0 -0
  771. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_runtime_tick_step_gate.py +0 -0
  772. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_schedule_run.py +0 -0
  773. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_schedule_v1_corpus.py +0 -0
  774. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_schedule_v2_calendar.py +0 -0
  775. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_scheduler.py +0 -0
  776. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_send_email_refiner.py +0 -0
  777. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_send_email_self_default_policy.py +0 -0
  778. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
  779. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_history.py +0 -0
  780. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_prompt_cache_attribution.py +0 -0
  781. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_prompt_cache_visibility.py +0 -0
  782. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_route_stamp.py +0 -0
  783. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_start_cost.py +0 -0
  784. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_session_tool_policy.py +0 -0
  785. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_shell_tool_exposure.py +0 -0
  786. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_snapshots.py +0 -0
  787. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_speculation_inheritance.py +0 -0
  788. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_speculation_reaches_provider_construction.py +0 -0
  789. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_sqlite_ledger_store.py +0 -0
  790. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_start_subworkflow_async_wait.py +0 -0
  791. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
  792. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
  793. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_steer_sidecar.py +0 -0
  794. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_step_context.py +0 -0
  795. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_storage_deletion.py +0 -0
  796. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_streamed_voice_namespace.py +0 -0
  797. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_structured_output_schema_enum.py +0 -0
  798. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_structured_schema_execution_client.py +0 -0
  799. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_subworkflow.py +0 -0
  800. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_terminal_effect_completion.py +0 -0
  801. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
  802. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_thinking_inheritance.py +0 -0
  803. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
  804. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_approval_executor.py +0 -0
  805. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_approval_resume_executes.py +0 -0
  806. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_approval_wait_key_identity.py +0 -0
  807. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_calls_idempotency_keys.py +0 -0
  808. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_catalog.py +0 -0
  809. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_descriptor_registry.py +0 -0
  810. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_argument_sanitization.py +0 -0
  811. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_error_output_detection.py +0 -0
  812. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_filename_alias.py +0 -0
  813. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
  814. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_read_file_aliases.py +0 -0
  815. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_executor_timeout.py +0 -0
  816. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_inventory_facade.py +0 -0
  817. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_invoke_effect.py +0 -0
  818. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_policy_and_mounts.py +0 -0
  819. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_tool_wait_allowlist_safety.py +0 -0
  820. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_topic_election_world_model.py +0 -0
  821. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trace_context_propagation.py +0 -0
  822. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_cloudevents.py +0 -0
  823. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_connection_listening.py +0 -0
  824. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_connections.py +0 -0
  825. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_feed.py +0 -0
  826. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_registry.py +0 -0
  827. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_schedule_math.py +0 -0
  828. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trigger_webhook.py +0 -0
  829. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_trusted_run_index.py +0 -0
  830. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_turn_grounding_byte_stability.py +0 -0
  831. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_turn_grounding_carriers_a3.py +0 -0
  832. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_vars_query_effect.py +0 -0
  833. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visit_ab_fixture.py +0 -0
  834. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visit_live_guidance.py +0 -0
  835. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visit_midturn_elections.py +0 -0
  836. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visit_midturn_resume.py +0 -0
  837. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visit_workflow.py +0 -0
  838. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
  839. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
  840. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
  841. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
  842. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
  843. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
  844. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_compare_typed_values.py +0 -0
  845. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_entity_memory_nodes.py +0 -0
  846. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
  847. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_llm_call_partial_override.py +0 -0
  848. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
  849. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_loop_back_out_of_body.py +0 -0
  850. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_loop_limit_and_list_nodes.py +0 -0
  851. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_loop_limit_on_wire.py +0 -0
  852. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_memact_compose_node.py +0 -0
  853. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
  854. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
  855. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
  856. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_reroute_lowering.py +0 -0
  857. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_set_vars_pins.py +0 -0
  858. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_unknown_node_type_refuses.py +0 -0
  859. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
  860. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_add_message_builtin.py +0 -0
  861. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
  862. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_agora_react_agent.py +0 -0
  863. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_call_tool_node.py +0 -0
  864. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
  865. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_compiler_basic.py +0 -0
  866. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
  867. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_continue_on_error.py +0 -0
  868. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_edit_json_schema_node.py +0 -0
  869. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
  870. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_file_nodes_workspace.py +0 -0
  871. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_function_library.py +0 -0
  872. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_get_element_node.py +0 -0
  873. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_get_random_element_node.py +0 -0
  874. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_get_var_node.py +0 -0
  875. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_has_tools_builtin.py +0 -0
  876. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
  877. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
  878. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_make_object_node.py +0 -0
  879. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_media_nodes.py +0 -0
  880. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_memory_effect_nodes.py +0 -0
  881. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_memory_source_pins.py +0 -0
  882. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_pin_expressions.py +0 -0
  883. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_prompt_only.py +0 -0
  884. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_random_nodes.py +0 -0
  885. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_schema_enum_switch.py +0 -0
  886. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_string_contains_replace.py +0 -0
  887. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_visualflow_tool_parameters_node.py +0 -0
  888. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_voice_library_facade.py +0 -0
  889. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_voice_openai_api_key_path.py +0 -0
  890. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_voice_projection_contract.py +0 -0
  891. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_voice_stream_is_not_a_wait.py +0 -0
  892. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_w4_feelings_lens.py +0 -0
  893. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_wait_event_deadline.py +0 -0
  894. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_wait_event_prompt_metadata.py +0 -0
  895. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_wait_until_streak.py +0 -0
  896. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_wait_until_utc_normalization.py +0 -0
  897. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workflow_bundle_registry.py +0 -0
  898. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_builtin_deny.py +0 -0
  899. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_context_allowed_workspaces.py +0 -0
  900. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
  901. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_policy_allowlist_mode.py +0 -0
  902. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
  903. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
  904. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_prompt_context.py +0 -0
  905. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_read_only.py +0 -0
  906. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_workspace_writable_paths.py +0 -0
  907. {abstractruntime-0.18.0 → abstractruntime-0.18.1}/tests/test_write_chart.py +0 -0
@@ -10,6 +10,17 @@ Unreleased changes live in [`changelog.d/`](changelog.d/README.md), one file per
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.18.1] - 2026-11-04
14
+
15
+ ### Added
16
+
17
+ - **A public update names the identity its run started with** (`replay/view.py`, ADR 0052, framework backlog 1119).
18
+ The replay view copies the run's `vars._runtime.identity_ref` (`{"of", "rev"}`, stamped by the gateway on visit,
19
+ summon, meet and session runs) onto each of that run's `public_update` messages as `identity_ref`, so a host serves
20
+ cached views with the ref already in place. A run without a ref, or with a malformed one, gives no field, never an
21
+ invented one; a snapshot read after the updates were folded stamps them then; the ref is part of the snapshot
22
+ digest, so the cursor token (an ETag) changes with it, and a run without a ref keeps the token it had.
23
+
13
24
  ## [0.18.0] - 2026-11-04
14
25
 
15
26
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: AbstractRuntime
3
- Version: 0.18.0
3
+ Version: 0.18.1
4
4
  Summary: AbstractRuntime: a durable graph runner designed to pair with AbstractCore.
5
5
  Project-URL: AbstractCore (website), https://www.abstractcore.ai/
6
6
  Project-URL: AbstractRuntime (GitHub), https://github.com/lpalbou/abstractruntime
@@ -55,10 +55,15 @@ Description-Content-Type: text/markdown
55
55
 
56
56
  It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
57
57
 
58
- **Version:** 0.18.0 • **Python:** 3.10+
58
+ **Version:** 0.18.1 • **Python:** 3.10+
59
59
 
60
60
  **Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
61
61
 
62
+ ## What's new in 0.18.1
63
+
64
+ - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
65
+ its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
66
+
62
67
  ## What's new in 0.18.0
63
68
 
64
69
  - **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
@@ -4,10 +4,15 @@
4
4
 
5
5
  It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
6
6
 
7
- **Version:** 0.18.0 • **Python:** 3.10+
7
+ **Version:** 0.18.1 • **Python:** 3.10+
8
8
 
9
9
  **Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
10
10
 
11
+ ## What's new in 0.18.1
12
+
13
+ - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
14
+ its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
15
+
11
16
  ## What's new in 0.18.0
12
17
 
13
18
  - **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
@@ -134,7 +134,8 @@ parse_identity_ref("session:sess_9f2a#1") # a regular agent's identity rides it
134
134
  `{"of", "rev"}`, beside the signed entity stamp (`vars["_runtime"]["entity"]`) and never inside
135
135
  it: presentation is not authority. `stamp_run_identity_ref(vars, ref)` puts it there;
136
136
  `read_run_identity_ref(vars)` returns it, or `None` when the run carries none (a reference is never
137
- made up). An old rev resolves through `identity_at_rev`.
137
+ made up). An old rev resolves through `identity_at_rev`. The replay view copies it onto the run's public
138
+ updates (`identity_ref`, see [replay.md](replay.md#public-conversation-messages)).
138
139
 
139
140
  ## The fingerprint
140
141
 
@@ -28,7 +28,11 @@ Explicit completed `public_update` events become assistant messages with
28
28
  `iteration`, `source_call_ids`, `update_kind`, and normal ledger provenance. `update_kind` is
29
29
  the producer's type for the update: `"finding"` (a fact or piece of evidence the actor
30
30
  established) or `"progress"` (what it is doing); an event without a `kind` of `"finding"`
31
- replays as `"progress"`. Replay copies the type and never infers it from the text. Replay does not turn reasoning,
31
+ replays as `"progress"`. Replay copies the type and never infers it from the text. When the run's snapshot
32
+ carries `vars["_runtime"]["identity_ref"]` (the gateway stamps it on visit, summon, meet and session runs),
33
+ each of that run's public updates carries it as `identity_ref` (`{"of", "rev"}`); a run without one, or with
34
+ a malformed one, gives no field, never an invented one. A snapshot read after the updates were folded stamps
35
+ them then, and the ref is part of the snapshot digest, so the cursor token changes with it. Replay does not turn reasoning,
32
36
  raw tool output or a marker inside model text into public speech. Diary/thinking fences
33
37
  are excluded. These are actor-authored updates; their wording alone is not proof of a fact
34
38
  or of completed work.
@@ -57,10 +57,15 @@ See llms.txt for the linked index.
57
57
 
58
58
  It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
59
59
 
60
- **Version:** 0.18.0 • **Python:** 3.10+
60
+ **Version:** 0.18.1 • **Python:** 3.10+
61
61
 
62
62
  **Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
63
63
 
64
+ ## What's new in 0.18.1
65
+
66
+ - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
67
+ its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
68
+
64
69
  ## What's new in 0.18.0
65
70
 
66
71
  - **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
@@ -6621,7 +6626,8 @@ parse_identity_ref("session:sess_9f2a#1") # a regular agent's identity rides it
6621
6626
  `{"of", "rev"}`, beside the signed entity stamp (`vars["_runtime"]["entity"]`) and never inside
6622
6627
  it: presentation is not authority. `stamp_run_identity_ref(vars, ref)` puts it there;
6623
6628
  `read_run_identity_ref(vars)` returns it, or `None` when the run carries none (a reference is never
6624
- made up). An old rev resolves through `identity_at_rev`.
6629
+ made up). An old rev resolves through `identity_at_rev`. The replay view copies it onto the run's public
6630
+ updates (`identity_ref`, see [replay.md](replay.md#public-conversation-messages)).
6625
6631
 
6626
6632
  ## The fingerprint
6627
6633
 
@@ -6990,7 +6996,11 @@ Explicit completed `public_update` events become assistant messages with
6990
6996
  `iteration`, `source_call_ids`, `update_kind`, and normal ledger provenance. `update_kind` is
6991
6997
  the producer's type for the update: `"finding"` (a fact or piece of evidence the actor
6992
6998
  established) or `"progress"` (what it is doing); an event without a `kind` of `"finding"`
6993
- replays as `"progress"`. Replay copies the type and never infers it from the text. Replay does not turn reasoning,
6999
+ replays as `"progress"`. Replay copies the type and never infers it from the text. When the run's snapshot
7000
+ carries `vars["_runtime"]["identity_ref"]` (the gateway stamps it on visit, summon, meet and session runs),
7001
+ each of that run's public updates carries it as `identity_ref` (`{"of", "rev"}`); a run without one, or with
7002
+ a malformed one, gives no field, never an invented one. A snapshot read after the updates were folded stamps
7003
+ them then, and the ref is part of the snapshot digest, so the cursor token changes with it. Replay does not turn reasoning,
6994
7004
  raw tool output or a marker inside model text into public speech. Diary/thinking fences
6995
7005
  are excluded. These are actor-authored updates; their wording alone is not proof of a fact
6996
7006
  or of completed work.
@@ -3,7 +3,7 @@
3
3
  > Durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
4
4
 
5
5
  - Python: 3.10+ (see `pyproject.toml`)
6
- - Version: 0.18.0
6
+ - Version: 0.18.1
7
7
  - Ecosystem: [AbstractFramework](https://github.com/lpalbou/AbstractFramework) umbrella, integrates with [AbstractCore](https://github.com/lpalbou/abstractcore)
8
8
  - Hard invariant: `RunState.vars` must be JSON-serializable (`src/abstractruntime/core/models.py`)
9
9
  - Current AbstractCore baseline: base `abstractruntime` requires AbstractCore 2.34.0 or newer with its light install (remote providers, tools and the MCP worker, media routing, the `decision` output modality); `abstractruntime[apple]` and `abstractruntime[gpu]` require AbstractCore's `apple` and `gpu` settings (`pyproject.toml`)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "AbstractRuntime"
7
- version = "0.18.0"
7
+ version = "0.18.1"
8
8
  description = "AbstractRuntime: a durable graph runner designed to pair with AbstractCore."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,8 @@
1
+ ### Added
2
+
3
+ - **A public update names the identity its run started with** (`replay/view.py`, ADR 0052, framework backlog 1119).
4
+ The replay view copies the run's `vars._runtime.identity_ref` (`{"of", "rev"}`, stamped by the gateway on visit,
5
+ summon, meet and session runs) onto each of that run's `public_update` messages as `identity_ref`, so a host serves
6
+ cached views with the ref already in place. A run without a ref, or with a malformed one, gives no field, never an
7
+ invented one; a snapshot read after the updates were folded stamps them then; the ref is part of the snapshot
8
+ digest, so the cursor token (an ETag) changes with it, and a run without a ref keeps the token it had.
@@ -4,7 +4,7 @@ description: Operate AbstractRuntime through durable Python workflows, effect re
4
4
  license: MIT
5
5
  compatibility: Python 3.10+. Model execution needs a configured AbstractCore provider or server; local engines need the apple or gpu install profile. This skill uses the Python API rather than a Gateway HTTP API.
6
6
  metadata:
7
- package-version: "0.18.0"
7
+ package-version: "0.18.1"
8
8
  ---
9
9
 
10
10
  # AbstractRuntime
@@ -22,7 +22,7 @@ folder when state must survive a restart.
22
22
  Install the version this skill describes (or newer):
23
23
 
24
24
  ```bash
25
- python -m pip install "abstractruntime>=0.18.0"
25
+ python -m pip install "abstractruntime>=0.18.1"
26
26
  ```
27
27
 
28
28
  The base profile includes remote-light AbstractCore integration and the MCP
@@ -49,6 +49,7 @@ from typing import Any, Dict, Iterable, List, Mapping, Optional, Set, Tuple
49
49
  from ..automations.attention import ANSWER_PAYLOADS
50
50
  from ..core.vars import is_paused_vars
51
51
  from ..history_bundle import _extract_usage_from_ledger_record, _extract_user_prompt_from_input
52
+ from ..identity.digital_identity import read_run_identity_ref
52
53
  from ..storage.ledger_slim import is_slim_marker, resolve_slim_value
53
54
  from .delta import token_run_names
54
55
  from .executions import ExecutionTracker, is_completion_record, is_progress_record
@@ -152,6 +153,18 @@ def _artifact_refs(value: Any, path: str = "", depth: int = 0) -> List[Tuple[str
152
153
  return out
153
154
 
154
155
 
156
+ def _run_identity_ref(run_vars: Any) -> Optional[Dict[str, Any]]:
157
+ """The `{of, rev}` identity ref the host stamped on the run (`vars._runtime.identity_ref`), or None:
158
+ absent or malformed, the view carries no ref rather than an invented one."""
159
+ if not isinstance(run_vars, Mapping):
160
+ return None
161
+ try:
162
+ ref = read_run_identity_ref(run_vars)
163
+ except (TypeError, ValueError):
164
+ return None
165
+ return ref.to_dict() if ref is not None else None
166
+
167
+
155
168
  def _snapshot(run: Any) -> Dict[str, Any]:
156
169
  """A run snapshot (RunState or its dict) as the plain fields the view reads."""
157
170
  if run is None:
@@ -173,7 +186,7 @@ def _snapshot(run: Any) -> Dict[str, Any]:
173
186
  prompt = _extract_user_prompt_from_input(source)[0] if isinstance(source, dict) else ""
174
187
  out = d.get("output")
175
188
  # Only what the view reads is kept (a snapshot's vars can be conversation-sized).
176
- return {
189
+ snap = {
177
190
  "run_id": _s(d.get("run_id")),
178
191
  "workflow_id": _s(d.get("workflow_id")),
179
192
  "status": _enum(d.get("status")),
@@ -187,6 +200,11 @@ def _snapshot(run: Any) -> Dict[str, Any]:
187
200
  "updated_at": _s(d.get("updated_at")),
188
201
  "paused": bool(is_paused_vars(d.get("vars"))),
189
202
  }
203
+ # Only when the host stamped one: a run without a ref keeps the same snapshot digest (cursor token).
204
+ ref = _run_identity_ref(d.get("vars"))
205
+ if ref is not None:
206
+ snap["identity_ref"] = ref
207
+ return snap
190
208
 
191
209
 
192
210
  def _snapshot_digest(snap: Dict[str, Any]) -> str:
@@ -522,9 +540,12 @@ class ReplayView:
522
540
  return
523
541
  r = self._run(rid)
524
542
  if r.snapshot != snap:
543
+ ref_changed = r.snapshot.get("identity_ref") != snap.get("identity_ref")
525
544
  r.snapshot = snap
526
545
  r.snap_digest = _snapshot_digest(snap)
527
546
  self._dirty["runs"].add(rid)
547
+ if ref_changed:
548
+ self._stamp_identity_ref(rid)
528
549
  if snap.get("workflow_id") and r.workflow_id != snap["workflow_id"]:
529
550
  r.workflow_id = snap["workflow_id"]
530
551
  self._dirty["runs"].add(rid)
@@ -1027,7 +1048,11 @@ class ReplayView:
1027
1048
  extra={"update_kind": "finding" if b.get("kind") == "finding" else "progress",
1028
1049
  "source_call_ids": [c for c in calls if isinstance(c, str)]
1029
1050
  if isinstance(calls, list) else [], "iteration": b.get("iteration"),
1030
- "session_id": _s(b.get("session_id")) or None})
1051
+ "session_id": _s(b.get("session_id")) or None,
1052
+ # The identity the host stamped on this run (visit, summon, meet,
1053
+ # session), as `{of, rev}`; none when the run carries none.
1054
+ "identity_ref": dict(r.snapshot["identity_ref"])
1055
+ if r.snapshot.get("identity_ref") else None})
1031
1056
  return
1032
1057
  question_receipt = (_s(rec.get("node_id")) == "__host_question__"
1033
1058
  and _s(rec.get("idempotency_key")).startswith("system:question:"))
@@ -1147,6 +1172,21 @@ class ReplayView:
1147
1172
 
1148
1173
  # ----------------------------------------------------------------- messages, artifacts
1149
1174
 
1175
+ def _stamp_identity_ref(self, run_id: str) -> None:
1176
+ """Put the run's identity ref on its public updates already folded (a snapshot read after
1177
+ its records), or take it off when the snapshot no longer carries one."""
1178
+ ref = self._runs[run_id].snapshot.get("identity_ref")
1179
+ for mid, msg in self._messages.items():
1180
+ if msg.get("run_id") != run_id or msg.get("kind") != "public_update" or msg.get("identity_ref") == ref:
1181
+ continue
1182
+ msg = dict(msg)
1183
+ if ref is None:
1184
+ msg.pop("identity_ref", None)
1185
+ else:
1186
+ msg["identity_ref"] = dict(ref)
1187
+ self._messages[mid] = msg
1188
+ self._dirty["messages"].add(mid)
1189
+
1150
1190
  def _message(self, mid: str, *, role: str, kind: str, text: str, run_id: str, step_id: str, seq: int, ts: str,
1151
1191
  source: str, artifact_ids: Optional[List[str]] = None, extra: Optional[Dict[str, Any]] = None) -> None:
1152
1192
  msg = {
@@ -0,0 +1,97 @@
1
+ """A public update names the identity its run started with (gateway lane ask, ADR 0052): the replay
2
+ view folds and caches public updates by version, so the host cannot stamp them at serve time. The view
3
+ copies the run's `vars._runtime.identity_ref` (`{of, rev}`, set by the gateway on visit, summon, meet and
4
+ session runs) onto that run's public updates; a run without one gets no field, never an invented one."""
5
+ import pytest
6
+
7
+ from abstractruntime.identity.digital_identity import identity_ref, stamp_run_identity_ref
8
+ from abstractruntime.replay import ReplayView, replay
9
+
10
+ pytestmark = pytest.mark.basic
11
+
12
+
13
+ def event(run, seq):
14
+ return {"run_id": run, "seq": seq, "step_id": f"s{seq}", "node_id": "parse", "status": "completed",
15
+ "started_at": f"2027-01-01T12:00:{seq:02d}+00:00",
16
+ "effect": {"type": "emit_event", "payload": {"name": "public_update", "payload": {
17
+ "id": f"{run}:public_update:{seq}", "run_id": run, "text": "The shorter route has stairs."}}},
18
+ "result": {"emitted": True}}
19
+
20
+
21
+ def snapshot(run, ref=None, **runtime):
22
+ run_vars = {"_runtime": dict(runtime)}
23
+ if ref is not None:
24
+ stamp_run_identity_ref(run_vars, ref)
25
+ return {"run_id": run, "workflow_id": "visit", "status": "running", "vars": run_vars}
26
+
27
+
28
+ def guidance(run, seq):
29
+ """The host's receipt of a person's words: a `guidance` message of the same run, not a public update."""
30
+ return {"run_id": run, "seq": seq, "step_id": f"s{seq}", "node_id": "__host_user_guidance__", "status": "completed",
31
+ "idempotency_key": "system:user_guidance:1", "started_at": f"2027-01-01T12:00:{seq:02d}+00:00",
32
+ "effect": {"type": "emit_event", "payload": {"name": "user_guidance", "payload": {
33
+ "seq": 1, "status": "accepted", "id": f"{run}:guidance:1", "run_id": run, "text": "No stairs."}}},
34
+ "result": {"emitted": True}}
35
+
36
+
37
+ def updates(view):
38
+ return [m for m in view.to_json()["messages"] if m["kind"] == "public_update"]
39
+
40
+
41
+ def test_the_run_s_identity_ref_is_copied_onto_its_public_updates():
42
+ view = replay({"R": [event("R", 1), event("R", 2)]}, {"R": snapshot("R", identity_ref("entity:castor", 3))},
43
+ root_run_id="R")
44
+ assert [m["identity_ref"] for m in updates(view)] == [{"of": "entity:castor", "rev": 3}] * 2
45
+
46
+
47
+ def test_a_child_run_s_update_names_the_child_s_ref_not_the_parent_s():
48
+ parent = {"run_id": "R", "seq": 1, "step_id": "spawn", "node_id": "agent", "status": "waiting",
49
+ "effect": {"type": "start_subworkflow", "payload": {"workflow_id": "agent"}},
50
+ "result": {"wait": {"reason": "subworkflow", "wait_key": "subworkflow:C"}}}
51
+ view = replay({"R": [parent], "C": [event("C", 1)]},
52
+ {"R": snapshot("R", identity_ref("entity:castor", 3)),
53
+ "C": dict(snapshot("C", identity_ref("session:s1", 1)), parent_run_id="R")}, root_run_id="R")
54
+ assert [m["identity_ref"] for m in updates(view)] == [{"of": "session:s1", "rev": 1}]
55
+
56
+
57
+ def test_a_snapshot_read_after_the_records_stamps_the_updates_already_folded():
58
+ view = ReplayView("R")
59
+ view.apply([event("R", 1), guidance("R", 2)])
60
+ assert "identity_ref" not in updates(view)[0]
61
+ delta = view.apply(runs_by_id={"R": snapshot("R", identity_ref("entity:castor", 3))})
62
+ assert updates(view)[0]["identity_ref"] == {"of": "entity:castor", "rev": 3}
63
+ # Only public updates carry it: the person's words in the same run are not the entity's.
64
+ words = [m for m in view.to_json()["messages"] if m["kind"] == "guidance"]
65
+ assert len(words) == 1 and "identity_ref" not in words[0]
66
+ assert "R:public_update:1" in str(delta) # the stamped message travels in the delta
67
+ fresh = replay({"R": [event("R", 1), guidance("R", 2)]}, {"R": snapshot("R", identity_ref("entity:castor", 3))},
68
+ root_run_id="R")
69
+ assert view.to_json()["messages"] == fresh.to_json()["messages"]
70
+
71
+
72
+ @pytest.mark.parametrize("run_snapshot", [
73
+ None, # no snapshot read at all
74
+ snapshot("R"), # a run without a ref
75
+ snapshot("R", identity_ref={"of": "entity:castor"}), # malformed: no rev
76
+ snapshot("R", identity_ref={"of": "castor", "rev": 3}), # malformed: subject without a namespace
77
+ snapshot("R", identity_ref="entity:castor#3"), # malformed: text, not {of, rev}
78
+ ])
79
+ def test_no_ref_on_the_run_means_no_field_never_a_fake(run_snapshot):
80
+ view = replay({"R": [event("R", 1)]}, {"R": run_snapshot} if run_snapshot else None, root_run_id="R")
81
+ assert "identity_ref" not in updates(view)[0]
82
+
83
+
84
+ def test_the_cursor_changes_with_the_ref_and_not_for_a_run_without_one():
85
+ records = {"R": [event("R", 1)]}
86
+ without = replay(records, {"R": snapshot("R")}, root_run_id="R").cursor["token"]
87
+ with_ref = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 3))}, root_run_id="R").cursor["token"]
88
+ next_rev = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 4))}, root_run_id="R").cursor["token"]
89
+ assert len({without, with_ref, next_rev}) == 3
90
+ # A run without a ref folds exactly the snapshot it folded before refs existed: its token (an ETag
91
+ # a client holds) does not change with this release.
92
+ from abstractruntime.replay.view import _snapshot
93
+ assert "identity_ref" not in _snapshot(snapshot("R"))
94
+ # A run whose ref is withdrawn loses it from its updates (the view never keeps a stale one).
95
+ view = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 3))}, root_run_id="R")
96
+ view.apply(runs_by_id={"R": snapshot("R")})
97
+ assert "identity_ref" not in updates(view)[0] and view.cursor["token"] == without
@@ -1,86 +0,0 @@
1
- ### Added
2
-
3
- - **Acquaintances of an entity or a session** (`identity/acquaintances.py`, framework backlog 1119):
4
- `entity_acquaintances(home_dir, run_store)` and `session_acquaintances(session_id, run_store)` answer two
5
- lists, the other entities and the humans it interacted with, each with first and last seen, the number of
6
- interactions and the task kinds. Computed from existing records, never stored: the participants the
7
- gateway stamps on visit, summon and meet runs, the person who started a run (`_meta.origin`), and who left
8
- a task in the task inbox. Identifiers only; interactions with no usable identifier (an `agent:` participant,
9
- a participant without a namespace, a person-started run without an actor) are listed under `not_counted`,
10
- never guessed. See `docs/track-record.md#acquaintances`.
11
- - **An entity's digital identity: its look and its voice, one record in its home**
12
- (`abstractruntime.identity.digital_identity`, framework ADR 0052 draft, backlog 1119; `docs/digital-identity.md`).
13
- `<home>/identity.json` holds the avatar design, its colour and the voice (`schema_version` 1). `write_identity` checks
14
- every bound (`IdentityInvalid` names the field), runs the gateway's `check` hook, appends an `identity_changed` row to
15
- `state_history.jsonl` (the `phase_changed` field names) before the file is replaced atomically, and never gives a
16
- `rev` twice: one write at a time per home (`<home>/.identity.lock`, held from the read to the file replace). A
17
- file it cannot read in full raises `IdentityUnreadable` on read and on write, never "no identity".
18
- `default_identity` is the recorded default anyone can recompute (SHA-256 of the entity id, eight engraved Watch
19
- designs, an HSL colour, the gateway's default voice as a value); `record_default_identity` writes it once and never
20
- overwrites. `identity_at_rev` answers an old rev from the biography. The reference `entity:castor#3` rides
21
- `vars._runtime.identity_ref` beside the signed entity stamp (`stamp_run_identity_ref`, `read_run_identity_ref`,
22
- `parse_identity_ref`). `identity_fingerprint` derives the individual's `actor_id` from the manifest, with the diary's
23
- chain head. Homes without `identity.json` are untouched.
24
- - **The summon tells the entity when its look or voice changed**: one sentence ("Your voice changed on 4 November (by
25
- laurent): now fr-male-rene.") in the summon prelude, after the identity core, when the change is newer than the
26
- previous summon (`render_summon_prelude(home_dir=, identity_since=)`, `ChatSession(identity_since=)`,
27
- `build_visit_workflow(identity_since=)` or `_visit.identity_since` seeded by the door).
28
- - **The idle unload reaches the host: `set_model_idle_unload(seconds)`** (host facade, `LocalAbstractCoreLLMClient`,
29
- `MultiLocalAbstractCoreLLMClient`; framework backlog 1115). It relays AbstractCore's process-wide idle-unload time
30
- (ADR 0012, default 60 minutes): a model no call has used for that long is unloaded, a locked model never is, and a
31
- running call is never interrupted. `None` or `0` turns it off; a refused value answers `ok: false`. Local residency
32
- rows of in-process text models carry `idle_unload_s`, `last_used_at` and `idle_unload_at`, and pass through Core's
33
- `in_use` and `locked_by`, so a host can show a model that is in use, or kept loaded by another account.
34
- - **`set_model_residency_locks(locks)`**: the locked models become exactly the listed ones (resident ones locked,
35
- missing ones loaded then locked, the others unlocked), each pair with its own outcome. A lock names a provider and a
36
- model; the `base_url` of a configured endpoint is not part of the key. A host stores its "Keep loaded" set and
37
- replays it at start; as a `set_` name it is replayed when the gateway's model host rebuilds a client.
38
- - **Track record and reputation of an entity or a session** (`identity/track_record.py`, ADR 0052 §5-§6,
39
- framework backlog 1119). `entity_track_record(home_dir, run_store, ledger_store, *, book_head)` and
40
- `session_track_record(session_id, run_store, ledger_store)` answer sessions, runs, successes, failures,
41
- cancelled, in progress and tokens (input, output, total), per task kind (`<phase or role>/<workflow_id>`,
42
- from ids only) and overall; `compute_reputation(record)` gives trust per task kind,
43
- `(successes + 1) / (successes + failures + 2)` with its support, the support-weighted overall, and the
44
- last 20 outcomes as evidence ("no experience yet" when there is none). Everything is computed from
45
- existing records; nothing is stored. Only work from outside counts: turn roots a person or a trigger
46
- started and automation occurrences (once each, however many attempts); sub-runs, controllers, the
47
- session memory run and runs another run or the system started never do. Outcomes come from the run
48
- status, the occurrence's `automation.completed` decision, an entity task marked `done`, and the work
49
- order verdicts (`done:` / `blocked:`). Feedback from people and agents (`feedback_user`,
50
- `feedback_agent`) is typed but has no source yet, so every answer says `basis: "completion-rate only"`.
51
- Each answer names its subject's `identity_ref` and, for an entity, its `identity_fingerprint`.
52
- See `docs/track-record.md`.
53
- - **`metrics_many` also returns `tokens_input` and `tokens_output`** (SQLite ledger): `usage.input_tokens`
54
- (else `prompt_tokens`) and `output_tokens` (else `completion_tokens`) of completed `llm_call` records.
55
- Existing keys are unchanged.
56
- - **`identity.life.read_work_order_verdicts(home_dir)`**: the verdicts the work lane archived in
57
- `work_order.done.md`, oldest first.
58
-
59
- ### Changed
60
-
61
- - **AbstractCore 2.34.0 or newer** (base install, `apple` and `gpu` settings): the idle unload and its residency rows
62
- come from it.
63
- - **A load with `ttl_s` or `keep_alive` on an in-process model** still lists them under `unsupported_options`; its
64
- warning now names the idle unload that applies instead ("the idle unload setting applies (60 min unused, never while
65
- it is kept loaded)"), or says it is off.
66
-
67
- ### Fixed
68
-
69
- - **A run store whose index cannot attribute a session is refused, never started as a plain chat**
70
- (`core/run_attribution.py`, framework backlog 0938). A third-party store with `list_run_index` but no `session_kind`
71
- in its rows (an index written before automations v1) used to report "no kinds" and let a `discussion-session:` start
72
- through as an ordinary chat, skipping the discussion's read-only anchor. It now raises `SessionAttributionError`
73
- naming the missing column; a store with no index at all names both methods it lacks. Built-in stores are unchanged.
74
- Upgrading a custom store: add `session_kind` and `role` to its index rows, or implement `session_kinds(session_id)`
75
- (see `docs/automations.md`, "Storage guarantees").
76
- - **A tool that reports its failure as a JSON object keeps its explanation** (`integrations/abstractcore/tool_executor.py`,
77
- framework backlog 1005). A failed result's `output` used to be emptied when the tool returned its failure as a JSON
78
- string, so the agent and the run ledger saw only the error line (for a web search: "No results found", never the
79
- backends tried, the bot-challenge status or the hint). The parsed object is now the result's `output`, as for a tool
80
- that returns a dict; a plain text error (`Error: ...`) still keeps an empty output and its message in `error`.
81
- - **The visual-flow Agent node shows the model that explanation** (`visualflow_compiler/compiler.py`). A failed call
82
- whose `output` is an object is rendered as its error line followed by the object (`[web_search]: Error: No results
83
- found` then the JSON), under the same `agent_observation_max_chars` limit; a plain text failure still shows its error
84
- line alone.
85
- - Failure payloads are now recorded in the run ledger and the history bundle like success payloads: whatever a tool puts
86
- in its failure JSON (its parameters included) is stored with the run.