omninode-memory 0.18.4__tar.gz → 0.18.6__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 (637) hide show
  1. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/required-checks.yaml +19 -12
  2. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/auto-tag-on-merge.yml +3 -9
  3. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/ban-hardcoded-runner-ip.yml +1 -1
  4. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/call-reject-skip.yml +1 -1
  5. omninode_memory-0.18.6/.github/workflows/call-repo-evidence-gate.yml +72 -0
  6. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/check-handshake.yml +2 -2
  7. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/ci.yml +164 -94
  8. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/contract-validation.yml +87 -27
  9. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/dep-provenance-gate.yml +3 -5
  10. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/docs-validate.yml +1 -1
  11. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/hardcoded-model-config.yml +1 -1
  12. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/imperative-contract-guard.yml +3 -2
  13. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/kb-doc-gate.yml +1 -1
  14. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/main-target-guard.yml +1 -6
  15. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/omni-standards-compliance.yml +2 -7
  16. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/pin-resolvability-gate.yml +3 -12
  17. omninode_memory-0.18.6/.github/workflows/pr-title-check.yml +53 -0
  18. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/public-repo-hygiene.yml +1 -1
  19. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/secrets-baseline-wiring.yml +1 -1
  20. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/security-scan.yml +2 -2
  21. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/stale-todo-gate.yml +1 -6
  22. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/validate-validator-requirements.yml +2 -8
  23. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/validator-runtime-profiles.yml +2 -7
  24. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.onex_ratchets/canonical_file_shape_baseline.txt +0 -1
  25. omninode_memory-0.18.6/.onex_ratchets/node_home_baseline.txt +18 -0
  26. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.pre-commit-config.yaml +35 -20
  27. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.pre-commit-hooks/reject-deploy-gate-skip-token.sh +19 -36
  28. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.secrets.baseline +1 -1
  29. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/CHANGELOG.md +10 -0
  30. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/PKG-INFO +2 -2
  31. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/architecture-handshakes/validator-requirements.yaml +2 -5
  32. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/config/hardcoded_model_config_baseline.yaml +0 -6
  33. omninode_memory-0.18.6/contracts/OMN-18595.yaml +54 -0
  34. omninode_memory-0.18.6/contracts/OMN-19998.yaml +41 -0
  35. omninode_memory-0.18.6/contracts/OMN-20032.yaml +57 -0
  36. omninode_memory-0.18.6/contracts/OMN-20074.yaml +229 -0
  37. omninode_memory-0.18.6/contracts/OMN-20702.yaml +65 -0
  38. omninode_memory-0.18.6/contracts/OMN-20936.yaml +55 -0
  39. omninode_memory-0.18.6/contracts/OMN-20940.yaml +58 -0
  40. omninode_memory-0.18.6/contracts/OMN-20943.yaml +67 -0
  41. omninode_memory-0.18.6/contracts/OMN-20945.yaml +51 -0
  42. omninode_memory-0.18.6/contracts/OMN-20997.yaml +69 -0
  43. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +1 -1
  44. omninode_memory-0.18.6/imperative-contract-allowlist.yaml +22 -0
  45. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/pyproject.toml +3 -4
  46. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/check_dep_provenance.py +0 -4
  47. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/test_selection_adjacency.yaml +8 -3
  48. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validate_ci_precommit_alignment.py +28 -7
  49. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/events/__init__.py +3 -0
  50. omninode_memory-0.18.6/src/omnimemory/models/events/model_lifecycle_transition_failed_event.py +60 -0
  51. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/dispatch_handlers.py +256 -13
  52. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/plugin.py +151 -5
  53. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/topics.py +6 -0
  54. omninode_memory-0.18.6/tests/ci/test_codeql_from_core_omn20074.py +78 -0
  55. omninode_memory-0.18.6/tests/ci/test_contract_compliance_own_contracts_omn20074.py +167 -0
  56. omninode_memory-0.18.6/tests/ci/test_contract_validation_core_validator_omn20074.py +246 -0
  57. omninode_memory-0.18.6/tests/ci/test_contracts_no_duplicate_keys_omn20945.py +50 -0
  58. omninode_memory-0.18.6/tests/ci/test_deployment_config_context_omn20940.py +81 -0
  59. omninode_memory-0.18.6/tests/ci/test_imperative_contract_guard_caller_omn20943.py +194 -0
  60. omninode_memory-0.18.6/tests/ci/test_no_change_control_refs_omn20074.py +66 -0
  61. omninode_memory-0.18.6/tests/ci/test_no_occ_callers_omn20074.py +226 -0
  62. omninode_memory-0.18.6/tests/ci/test_node_home_activation_omn20702.py +83 -0
  63. omninode_memory-0.18.6/tests/ci/test_pr_title_check_omnimarket_node.py +202 -0
  64. omninode_memory-0.18.6/tests/ci/test_precommit_hooks_core_omn20074.py +100 -0
  65. omninode_memory-0.18.6/tests/ci/test_public_runner_placement_omn19998.py +152 -0
  66. omninode_memory-0.18.6/tests/ci/test_reject_skip_token_hook_omn20074.py +71 -0
  67. omninode_memory-0.18.6/tests/ci/test_repo_evidence_caller_omn20074.py +124 -0
  68. omninode_memory-0.18.6/tests/ci/test_repo_evidence_caller_verifier_floor_omn20032.py +63 -0
  69. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/scripts/test_check_dep_provenance.py +4 -4
  70. omninode_memory-0.18.6/tests/test_release_metadata_omn18595.py +41 -0
  71. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_dispatch_handlers.py +3 -3
  72. omninode_memory-0.18.6/tests/unit/runtime/test_expire_memory_dispatch.py +374 -0
  73. omninode_memory-0.18.6/tests/unit/runtime/test_navigation_embedding_url_omn20936.py +90 -0
  74. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_plugin_integration_wiring.py +145 -0
  75. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_validate_ci_precommit_alignment.py +69 -3
  76. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_workflow_sibling_pins.py +1 -1
  77. omninode_memory-0.18.6/tests/workflows/__init__.py +2 -0
  78. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/uv.lock +20 -21
  79. omninode_memory-0.18.4/.github/workflows/call-occ-autobind.yml +0 -196
  80. omninode_memory-0.18.4/.github/workflows/call-occ-companion-effect.yml +0 -267
  81. omninode_memory-0.18.4/.github/workflows/pr-title-check.yml +0 -34
  82. omninode_memory-0.18.4/scripts/ci/occ_manual_replay_precheck.py +0 -165
  83. omninode_memory-0.18.4/tests/scripts/test_occ_eligibility_enforcement.py +0 -165
  84. omninode_memory-0.18.4/tests/unit/scripts/test_occ_manual_replay_precheck.py +0 -160
  85. omninode_memory-0.18.4/tests/unit/test_occ_companion_effect_edited_trigger_omn_18334.py +0 -71
  86. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.claude/architecture-handshake.md +0 -0
  87. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.env.example +0 -0
  88. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.flake8 +0 -0
  89. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/CODE_OF_CONDUCT.md +0 -0
  90. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/CONTRIBUTING.md +0 -0
  91. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  92. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  93. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  94. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/dependabot.yml +0 -0
  95. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/auto-merge.yml +0 -0
  96. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/build-and-push-migrate-image.yml +0 -0
  97. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/pre-commit.yml +0 -0
  98. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/release-dry-run.yml +0 -0
  99. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/release.yml +0 -0
  100. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/sibling-lock-refresh.yml +0 -0
  101. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/todo-audit-on-merge.yml +0 -0
  102. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.github/workflows/url-authority-gate.yml +0 -0
  103. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.gitignore +0 -0
  104. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.kb-doc-gate.yaml +0 -0
  105. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.markdown-link-check.json +0 -0
  106. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.onex_ratchets/noncanonical_class_allowlist.yaml +0 -0
  107. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.public-repo-hygiene.yaml +0 -0
  108. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.serena/project.yml +0 -0
  109. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/.yamlfmt +0 -0
  110. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/CLAUDE.md +0 -0
  111. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/LICENSE +0 -0
  112. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/README.md +0 -0
  113. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/SECURITY.md +0 -0
  114. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/architecture-handshakes/validator-requirements-baseline.yaml +0 -0
  115. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/contract.yaml +0 -0
  116. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/contracts/OMN-12245.yaml +0 -0
  117. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
  118. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations/002_create_memories_table.sql +0 -0
  119. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
  120. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
  121. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
  122. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
  123. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
  124. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/deployment/docker/Dockerfile.migrate +0 -0
  125. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docker-compose.prod.yml +0 -0
  126. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docker-compose.yml +0 -0
  127. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-icon-black.png +0 -0
  128. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-icon-full-color.svg +0 -0
  129. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-icon-white.png +0 -0
  130. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-inline-black.png +0 -0
  131. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-inline-full-color.svg +0 -0
  132. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-inline-white.png +0 -0
  133. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-stacked-black.png +0 -0
  134. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-stacked-full-color.svg +0 -0
  135. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-stacked-white.png +0 -0
  136. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-wordmark-black.svg +0 -0
  137. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-wordmark-grey.svg +0 -0
  138. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/docs/assets/brand/omninode-wordmark-white.svg +0 -0
  139. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/examples/__init__.py +0 -0
  140. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/examples/advanced_architecture_demo.py +0 -0
  141. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/pyrightconfig.json +0 -0
  142. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/__init__.py +0 -0
  143. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/check_migration_freeze.sh +0 -0
  144. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/check_no_hardcoded_bolt.sh +0 -0
  145. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/__init__.py +0 -0
  146. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/collect_changed_files.py +0 -0
  147. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/detect_test_paths.py +0 -0
  148. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/run_runtime_profiles_validator.py +0 -0
  149. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/test_selection_loader.py +0 -0
  150. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/test_selection_models.py +0 -0
  151. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/ci/verify_pypi_pin_resolvability.py +0 -0
  152. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/graphify_to_memgraph.py +0 -0
  153. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/graphify_to_qdrant.py +0 -0
  154. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/__init__.py +0 -0
  155. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/check_ai_slop.py +0 -0
  156. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
  157. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/check_no_internal_ips.sh +0 -0
  158. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/check_precommit_additional_dependencies.sh +0 -0
  159. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/foundation_validation_common.py +0 -0
  160. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_enum_casing.py +0 -0
  161. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_http_imports.py +0 -0
  162. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_kafka_imports.py +0 -0
  163. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_model_locations.py +0 -0
  164. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_naming.py +0 -0
  165. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_no_backward_compatibility.py +0 -0
  166. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_no_env_fallbacks.py +0 -0
  167. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_pydantic_patterns.py +0 -0
  168. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_secrets.py +0 -0
  169. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_single_class_per_file.py +0 -0
  170. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/scripts/validation/validate_spdx_headers.py +0 -0
  171. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/__init__.py +0 -0
  172. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/_compat_imports.py +0 -0
  173. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/__init__.py +0 -0
  174. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_concurrency.py +0 -0
  175. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_correlation_context.py +0 -0
  176. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_db_url.py +0 -0
  177. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_error_sanitizer.py +0 -0
  178. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_handler_constants.py +0 -0
  179. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_health_manager.py +0 -0
  180. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_metrics_counter.py +0 -0
  181. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_observability_wrapper.py +0 -0
  182. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_pii_detector.py +0 -0
  183. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_resource_manager.py +0 -0
  184. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/adapters/adapter_retry_utils.py +0 -0
  185. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/bootstrap.py +0 -0
  186. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/__init__.py +0 -0
  187. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/crawl/__init__.py +0 -0
  188. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
  189. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
  190. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
  191. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
  192. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_context_item_type.py +0 -0
  193. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_data_type.py +0 -0
  194. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
  195. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_error_code.py +0 -0
  196. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
  197. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
  198. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
  199. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
  200. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_memory_type.py +0 -0
  201. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_migration_status.py +0 -0
  202. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_node_type.py +0 -0
  203. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_operation_status.py +0 -0
  204. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_preferred_tone.py +0 -0
  205. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_priority_level.py +0 -0
  206. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
  207. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
  208. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_severity.py +0 -0
  209. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_subscription_status.py +0 -0
  210. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_technical_level.py +0 -0
  211. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/enums/enum_trust_level.py +0 -0
  212. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/errors/__init__.py +0 -0
  213. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/errors/embedding_errors.py +0 -0
  214. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/__init__.py +0 -0
  215. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/__init__.py +0 -0
  216. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
  217. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +0 -0
  218. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
  219. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_intent_graph_contract.yaml +0 -0
  220. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
  221. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
  222. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
  223. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
  224. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
  225. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
  226. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/handler_intent.py +0 -0
  227. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/handler_subscription.py +0 -0
  228. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/handler_subscription_contract.yaml +0 -0
  229. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/models/__init__.py +0 -0
  230. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
  231. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/__init__.py +0 -0
  232. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/__init__.py +0 -0
  233. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
  234. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
  235. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
  236. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
  237. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
  238. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
  239. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
  240. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/__init__.py +0 -0
  241. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
  242. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_embedding_config.py +0 -0
  243. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
  244. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
  245. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
  246. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
  247. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
  248. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_postgres_config.py +0 -0
  249. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
  250. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
  251. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
  252. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
  253. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
  254. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/container/__init__.py +0 -0
  255. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/__init__.py +0 -0
  256. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
  257. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
  258. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
  259. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
  260. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
  261. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/__init__.py +0 -0
  262. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_memory_context.py +0 -0
  263. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
  264. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
  265. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_memory_request.py +0 -0
  266. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_memory_response.py +0 -0
  267. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
  268. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
  269. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/core/model_provenance.py +0 -0
  270. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/__init__.py +0 -0
  271. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
  272. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
  273. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
  274. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
  275. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
  276. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
  277. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
  278. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/crawl/types.py +0 -0
  279. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
  280. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
  281. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/__init__.py +0 -0
  282. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
  283. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_configuration.py +0 -0
  284. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
  285. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_error_details.py +0 -0
  286. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
  287. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_health_response.py +0 -0
  288. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
  289. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
  290. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
  291. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_notes.py +0 -0
  292. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_priority.py +0 -0
  293. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
  294. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_semver.py +0 -0
  295. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
  296. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_system_health.py +0 -0
  297. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_tags.py +0 -0
  298. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
  299. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
  300. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/foundation/model_user.py +0 -0
  301. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/__init__.py +0 -0
  302. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
  303. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
  304. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
  305. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
  306. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
  307. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/__init__.py +0 -0
  308. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/model_memory_item.py +0 -0
  309. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/model_memory_query.py +0 -0
  310. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
  311. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
  312. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
  313. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/persona/__init__.py +0 -0
  314. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/persona/model_persona_signal.py +0 -0
  315. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/persona/model_user_persona_v1.py +0 -0
  316. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/scoring/__init__.py +0 -0
  317. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
  318. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
  319. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
  320. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/service/__init__.py +0 -0
  321. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/service/model_service_config.py +0 -0
  322. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/service/model_service_health.py +0 -0
  323. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/service/model_service_registry.py +0 -0
  324. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/subscription/__init__.py +0 -0
  325. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/subscription/constants.py +0 -0
  326. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
  327. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
  328. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/subscription/model_subscription.py +0 -0
  329. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/__init__.py +0 -0
  330. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_audit.py +0 -0
  331. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
  332. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
  333. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_concurrency.py +0 -0
  334. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
  335. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
  336. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
  337. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
  338. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_health_status.py +0 -0
  339. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
  340. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
  341. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_pii_match.py +0 -0
  342. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
  343. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_pii_type.py +0 -0
  344. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
  345. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
  346. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_retry_config.py +0 -0
  347. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
  348. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
  349. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/models/utils/model_system_health.py +0 -0
  350. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/__init__.py +0 -0
  351. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/base.py +0 -0
  352. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
  353. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
  354. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
  355. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
  356. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
  357. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/__init__.py +0 -0
  358. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/adapters/__init__.py +0 -0
  359. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/contract.yaml +0 -0
  360. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/__init__.py +0 -0
  361. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/handler_agent_learning_retrieval.py +0 -0
  362. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/__init__.py +0 -0
  363. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_request.py +0 -0
  364. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_response.py +0 -0
  365. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
  366. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +0 -0
  367. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
  368. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
  369. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/mappers/__init__.py +0 -0
  370. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/mappers/util_intent_mapping.py +0 -0
  371. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
  372. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
  373. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
  374. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
  375. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
  376. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
  377. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
  378. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +0 -0
  379. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
  380. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
  381. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
  382. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
  383. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/__init__.py +0 -0
  384. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/adapter_kreuzberg_client.py +0 -0
  385. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
  386. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
  387. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
  388. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
  389. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
  390. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
  391. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
  392. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
  393. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
  394. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
  395. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +0 -0
  396. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
  397. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
  398. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
  399. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
  400. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
  401. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
  402. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
  403. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  404. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/__init__.py +0 -0
  405. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/adapter_embedding_client.py +0 -0
  406. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
  407. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/contract_descriptor.py +0 -0
  408. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
  409. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
  410. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_decay.py +0 -0
  411. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_fusion.py +0 -0
  412. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
  413. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
  414. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
  415. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
  416. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
  417. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
  418. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
  419. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
  420. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
  421. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
  422. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
  423. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
  424. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
  425. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
  426. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
  427. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
  428. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
  429. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
  430. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
  431. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
  432. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
  433. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/contract.yaml +0 -0
  434. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
  435. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
  436. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
  437. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
  438. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
  439. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
  440. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
  441. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/__init__.py +0 -0
  442. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/contract.yaml +0 -0
  443. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/handlers/__init__.py +0 -0
  444. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/handlers/handler_persona_classify.py +0 -0
  445. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/models/__init__.py +0 -0
  446. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_request.py +0 -0
  447. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_result.py +0 -0
  448. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/__init__.py +0 -0
  449. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/adapters/__init__.py +0 -0
  450. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/adapters/adapter_postgres_persona.py +0 -0
  451. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/contract.yaml +0 -0
  452. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/models/__init__.py +0 -0
  453. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_request.py +0 -0
  454. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_response.py +0 -0
  455. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
  456. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +0 -0
  457. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
  458. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
  459. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
  460. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
  461. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
  462. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
  463. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
  464. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +0 -0
  465. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
  466. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
  467. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
  468. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
  469. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
  470. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
  471. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
  472. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/__init__.py +0 -0
  473. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/base_protocols.py +0 -0
  474. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/data_models.py +0 -0
  475. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/error_models.py +0 -0
  476. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/protocol_embedding.py +0 -0
  477. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
  478. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
  479. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
  480. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
  481. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/__init__.py +0 -0
  482. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/adapters.py +0 -0
  483. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/contract_topics.py +0 -0
  484. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/handler_lifecycle.py +0 -0
  485. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/handler_lifecycle_contract.yaml +0 -0
  486. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/introspection.py +0 -0
  487. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/message_type_registration.py +0 -0
  488. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/runtime/wiring.py +0 -0
  489. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/secrets.py +0 -0
  490. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/settings.py +0 -0
  491. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/tools/__init__.py +0 -0
  492. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/tools/contract_linter.py +0 -0
  493. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/tools/validators/__init__.py +0 -0
  494. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/src/omnimemory/tools/validators/validator_contract.py +0 -0
  495. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/__init__.py +0 -0
  496. {omninode_memory-0.18.4/tests/nodes/node_navigation_history_reducer → omninode_memory-0.18.6/tests/ci}/__init__.py +0 -0
  497. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/conftest.py +0 -0
  498. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/fixtures/omn19666/pre-commit-git-dependency.yaml +0 -0
  499. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/fixtures/omn19666/pre-commit-pypi-dependency.yaml +0 -0
  500. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/gates/__init__.py +0 -0
  501. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/gates/test_ban_hardcoded_runner_ip_scope.py +0 -0
  502. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/gates/test_consumer_group_name_authorization.py +0 -0
  503. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/__init__.py +0 -0
  504. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/__init__.py +0 -0
  505. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
  506. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
  507. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
  508. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
  509. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
  510. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
  511. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/test_handler_intent.py +0 -0
  512. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/handlers/test_handler_semantic_compute.py +0 -0
  513. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/__init__.py +0 -0
  514. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/conftest.py +0 -0
  515. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/nodes/__init__.py +0 -0
  516. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
  517. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
  518. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
  519. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_entry_point_discovery.py +0 -0
  520. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_golden_chain_memgraph_ingestion.py +0 -0
  521. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_golden_chain_qdrant_ingestion.py +0 -0
  522. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
  523. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_handler_subscription.py +0 -0
  524. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_node_agent_coordinator.py +0 -0
  525. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/integration/test_persona_round_trip.py +0 -0
  526. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/__init__.py +0 -0
  527. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/contracts/__init__.py +0 -0
  528. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/contracts/test_extended_contracts.py +0 -0
  529. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/events/__init__.py +0 -0
  530. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/events/test_model_intent_classified_event.py +0 -0
  531. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/models/test_frozen_boundary_models.py +0 -0
  532. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/__init__.py +0 -0
  533. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
  534. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
  535. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
  536. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
  537. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
  538. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  539. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_retrieval_effect/test_contract_descriptor.py +0 -0
  540. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_retrieval_effect/test_dispatch_entrypoint_contract.py +0 -0
  541. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
  542. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
  543. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
  544. {omninode_memory-0.18.4/tests/scripts → omninode_memory-0.18.6/tests/nodes/node_navigation_history_reducer}/__init__.py +0 -0
  545. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
  546. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_similarity_compute/__init__.py +0 -0
  547. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
  548. {omninode_memory-0.18.4/tests/unit/adapters → omninode_memory-0.18.6/tests/scripts}/__init__.py +0 -0
  549. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/scripts/test_pin_resolvability_conflict_report.py +0 -0
  550. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/scripts/test_pin_resolvability_gate_workflow.py +0 -0
  551. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_bootstrap.py +0 -0
  552. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_concurrency.py +0 -0
  553. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_config_models.py +0 -0
  554. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_contract_validation.py +0 -0
  555. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_contract_version.py +0 -0
  556. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_db_url.py +0 -0
  557. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_foundation.py +0 -0
  558. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_health_manager.py +0 -0
  559. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_migration_progress.py +0 -0
  560. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_node_enforcement.py +0 -0
  561. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_node_imports.py +0 -0
  562. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_observability_manager.py +0 -0
  563. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_observability_metrics.py +0 -0
  564. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_performance.py +0 -0
  565. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_precommit_additional_dependencies_omn19666.sh +0 -0
  566. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_precommit_staged_scope_omn19612.py +0 -0
  567. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_resource_manager.py +0 -0
  568. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_secrets_provider.py +0 -0
  569. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_semantic_compute_policy_config.py +0 -0
  570. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_settings.py +0 -0
  571. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/test_validation_scripts.py +0 -0
  572. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/__init__.py +0 -0
  573. {omninode_memory-0.18.4/tests/unit/handlers → omninode_memory-0.18.6/tests/unit/adapters}/__init__.py +0 -0
  574. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/adapters/test_adapter_pii_detector.py +0 -0
  575. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/adapters/test_pii_live_call_paths.py +0 -0
  576. {omninode_memory-0.18.4/tests/unit/handlers/adapters → omninode_memory-0.18.6/tests/unit/handlers}/__init__.py +0 -0
  577. {omninode_memory-0.18.4/tests/unit/nodes → omninode_memory-0.18.6/tests/unit/handlers/adapters}/__init__.py +0 -0
  578. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
  579. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/handlers/test_subscription_typing.py +0 -0
  580. {omninode_memory-0.18.4/tests/unit/runtime → omninode_memory-0.18.6/tests/unit/nodes}/__init__.py +0 -0
  581. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/fixtures/omn16765/hybrid_retrieval_corpus.json +0 -0
  582. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_activation_decay.py +0 -0
  583. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_decay_ranking.py +0 -0
  584. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_handler_agent_learning_retrieval.py +0 -0
  585. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_handler_qdrant.py +0 -0
  586. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_handler_routing_boot_resolvable.py +0 -0
  587. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_hybrid_retrieval_fusion.py +0 -0
  588. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
  589. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
  590. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
  591. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
  592. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
  593. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
  594. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
  595. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
  596. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
  597. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
  598. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_navigation_history_reducer_contract.py +0 -0
  599. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_node_agent_learning_retrieval_models.py +0 -0
  600. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_persona_builder.py +0 -0
  601. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/nodes/test_persona_storage_retrieval.py +0 -0
  602. {omninode_memory-0.18.4/tests/unit/scripts → omninode_memory-0.18.6/tests/unit/runtime}/__init__.py +0 -0
  603. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/conftest.py +0 -0
  604. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_adapters.py +0 -0
  605. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_contract_handler_completeness.py +0 -0
  606. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_contract_topics.py +0 -0
  607. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_introspection.py +0 -0
  608. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_memory_subscription_group_is_authorized.py +0 -0
  609. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_message_type_registration.py +0 -0
  610. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_plugin.py +0 -0
  611. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
  612. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
  613. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_standalone_handler_contracts.py +0 -0
  614. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/runtime/test_wiring.py +0 -0
  615. {omninode_memory-0.18.4/tests/workflows → omninode_memory-0.18.6/tests/unit/scripts}/__init__.py +0 -0
  616. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/scripts/test_check_ai_slop.py +0 -0
  617. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/scripts/test_collect_changed_files.py +0 -0
  618. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_auto_tag_app_token_push_omn18662.py +0 -0
  619. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_ci_workflow_shape.py +0 -0
  620. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_contract_linter.py +0 -0
  621. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_detect_test_paths.py +0 -0
  622. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_dispatch_retrieval_config.py +0 -0
  623. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_entry_points.py +0 -0
  624. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_graphify_to_memgraph.py +0 -0
  625. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_graphify_to_qdrant.py +0 -0
  626. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
  627. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_ingestion_models.py +0 -0
  628. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_model_user_persona_v1.py +0 -0
  629. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_no_duplicate_node_uuids.py +0 -0
  630. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_persona_enums.py +0 -0
  631. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_scope_mapping_config.py +0 -0
  632. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_sql_placeholders.py +0 -0
  633. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/unit/test_validate_kafka_imports.py +0 -0
  634. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/workflows/test_auto_merge_ready_for_review_omn19216.py +0 -0
  635. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/tests/workflows/test_auto_merge_workflow.py +0 -0
  636. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/validate_architecture_improvements.py +0 -0
  637. {omninode_memory-0.18.4 → omninode_memory-0.18.6}/validation/runtime_profiles_allowlist.yaml +0 -0
@@ -17,19 +17,14 @@
17
17
  # Manifest entries (including CI Summary members): 15
18
18
 
19
19
  required_checks:
20
- # OMN-18854: this is an umbrella member, not a separate protection context.
21
- - name: "occ-preflight / eligibility"
22
- workflow: ci.yml
23
- job_id: occ-preflight
24
- conditional: true
25
- condition: "Required on pull_request and merge_group; not applicable on push or workflow_dispatch"
20
+ - name: "pr-title / check-title"
21
+ workflow: pr-title-check.yml
22
+ job_id: pr-title
23
+ producer_kind: local
24
+ conditional: false
26
25
  rationale: >-
27
- OMN-18854. The shared eligibility validator feeds the required CI Summary
28
- through the OCC Eligibility Admission job. On pull_request and
29
- merge_group, only successful preflight passes admission; CI Summary
30
- requires a successful admission verdict on every event. Failed,
31
- cancelled, skipped and absent results block. The caller and validator
32
- source use the same immutable omnibase_core revision.
26
+ PR title ticket-reference check: the job runs omnimarket's
27
+ node_pr_title_check_compute from a pinned omnimarket release (OMN-20997).
33
28
 
34
29
  # -- Phase 1: Quick Validation (parallel, ~2-5 min) -------------------------
35
30
 
@@ -124,6 +119,18 @@ required_checks:
124
119
  the required CI Summary context, which needs: this job and accepts only a
125
120
  success result.
126
121
 
122
+ - name: "Public Runner Placement (OMN-19998)"
123
+ workflow: ci.yml
124
+ job_id: public-runner-placement
125
+ conditional: false
126
+ rationale: >-
127
+ OMN-19998. Operator ruling 2026-10-16T07:07:09Z: CI runners are for
128
+ private repositories only. Refuses a job whose runs-on is, or can resolve
129
+ to, a self-hosted label, using omnibase_core's check at the release the
130
+ pre-commit hook pins. Unconditional (no needs, no if); gates merges
131
+ through the required CI Summary context, which needs: this job and
132
+ accepts only a success result.
133
+
127
134
  # -- Phase 2: Full Test Suite ------------------------------------------------
128
135
 
129
136
  - name: "Tests"
@@ -45,14 +45,8 @@ jobs:
45
45
  startsWith(github.event.pull_request.title, 'release:') ||
46
46
  startsWith(github.event.pull_request.title, 'chore: release') ||
47
47
  startsWith(github.event.pull_request.title, 'chore(release)'))
48
- # OMNI_RUNNER_SELECTOR_V1 - trusted events default to self-hosted omnibase-ci; pull_request defaults to ubuntu-latest
49
- runs-on: >-
50
- ${{
51
- (github.event_name == 'pull_request' &&
52
- github.event.pull_request.head.repo.full_name != github.repository)
53
- && fromJSON(vars.OMNI_PUBLIC_PR_RUNS_ON_JSON || '["ubuntu-latest"]')
54
- || fromJSON(vars.OMNI_TRUSTED_CI_RUNS_ON_JSON || '["self-hosted","omnibase-ci"]')
55
- }}
48
+ # OMN-19998: public repository, GitHub-hosted runner only (RULING 2026-10-16T07:07:09Z)
49
+ runs-on: ubuntu-latest
56
50
  permissions:
57
51
  contents: read
58
52
  steps:
@@ -61,7 +55,7 @@ jobs:
61
55
  # separate credential file and includes it through `includeIf.gitdir`, so
62
56
  # it overrides the App credential in the push URL below and the push
63
57
  # authenticates as github-actions[bot] again.
64
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
58
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
65
59
  with:
66
60
  persist-credentials: false
67
61
 
@@ -31,7 +31,7 @@ jobs:
31
31
  # OMN-17993: pinned to an exact SHA, not @main. omniclaude main lags dev by
32
32
  # design (release-synced), so @main still resolves to the pre-widening scanner
33
33
  # body that scans workflow files only and exits 0 on a tests-only diff.
34
- uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
34
+ uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@a45ba68f053e9979c6edef21103c0e674e5f7630 # OMN-20074: omniclaude#2656 squash, the reusable scans without the nested change-control preflight
35
35
  permissions:
36
36
  contents: read
37
37
  pull-requests: read
@@ -28,5 +28,5 @@ permissions:
28
28
 
29
29
  jobs:
30
30
  call-reject-skip-token:
31
- uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
31
+ uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@e9b550b6be0a8e648ea83f9ed7f5fb8175ae1aaf
32
32
  secrets: inherit
@@ -0,0 +1,72 @@
1
+ # SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ # Repo Evidence Gate caller (OMN-20074, OCC retirement OR.6) verifies
5
+ # omnimemory's own contracts/<OMN-N>.yaml at the PR head through
6
+ # omnibase_core's receipt-gate reusable with evidence-source: caller.
7
+ # This is the path omnimarket proved as the canary (OMN-20070, OMN-20072).
8
+ #
9
+ # Why pull_request_target: GitHub reads the workflow definition from the BASE
10
+ # branch, so a pull request that edits this file or the reusable's pin does not
11
+ # change which definition runs on it. The pull request's own code is only ever
12
+ # checked out as data by the reusable, which refuses fork heads.
13
+ #
14
+ # dev and main are the integration branches. The activity types cover new heads,
15
+ # reopened and ready PRs, and edits to the ticket citation or base branch.
16
+ # Per-PR concurrency cancels superseded runs so the latest event gets a verdict.
17
+ # Read-only contents and pull-requests permissions are all this caller needs;
18
+ # checkout and verification belong to the reusable, with no caller secrets.
19
+ # The full-SHA pin makes the reusable immutable; verifier-version pins the
20
+ # released verifier used to read the caller's contracts.
21
+ #
22
+ # The job id is the context prefix: repo-evidence / dod-verify carries the
23
+ # verdict, so do not add a job name. The reusable also reports a
24
+ # repo-evidence / verify job in this mode as a success no-op (the OCC path,
25
+ # switched off by the input); only repo-evidence / dod-verify carries a verdict.
26
+ #
27
+ # S6 cut-over (OMN-20074): the caller enforces repo-owned evidence with
28
+ # shadow: "false" and compare-with-occ: "false". Admission no longer compares
29
+ # against OCC. The comparison was switched off on dev first, because this caller
30
+ # runs from dev under pull_request_target and the retiring pull request cannot
31
+ # change the input that judges it. No OCC caller remains in this repository, so
32
+ # the difference step would otherwise wait for a verdict nobody reports.
33
+ # repo-evidence / dod-verify carries the verdict; a repository ruleset on dev is
34
+ # to require that context once the OCC contexts have left the ruleset.
35
+ # Rollback is setting shadow back to "true", which makes every repo-evidence
36
+ # job conclude success again while the cause is found.
37
+ #
38
+ # The reusable is pinned by full SHA to the squash commit of omnibase_core#1932
39
+ # on dev, a descendant of #1914; it carries the `shadow` input. omnimemory does
40
+ # not host receipt-gate.yml.
41
+ #
42
+ # The pinned reusable refuses a verifier-version below 0.4.303 before installing
43
+ # it (VERIFIER_FLOOR, omnibase_core#1932; OMN-20032), the first release that
44
+ # refuses a contract leaving a criterion unbound. With shadow "false" that
45
+ # install step blocks. verifier-version 0.4.310 is the first omnimarket release
46
+ # that ships the writer-app and plugin-manifest diff classifiers
47
+ # (omnimarket#3694) and refuses a contract that repeats a mapping key
48
+ # (omnimarket#3751), the version omniclaude and omnidash run.
49
+
50
+ name: Repo Evidence Gate
51
+
52
+ on:
53
+ pull_request_target:
54
+ types: [opened, synchronize, reopened, edited, ready_for_review]
55
+ branches: [dev, main]
56
+
57
+ concurrency:
58
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
59
+ cancel-in-progress: true
60
+
61
+ permissions:
62
+ contents: read
63
+ pull-requests: read
64
+
65
+ jobs:
66
+ repo-evidence:
67
+ uses: OmniNode-ai/omnibase_core/.github/workflows/receipt-gate.yml@4e4f5e0404d364e296c5d37db6aa3ab9e07f8ffa # OMN-20032: immutable full-SHA pin, the squash commit of omnibase_core#1932 on that repo's dev branch; descends from #1914 (carries the shadow input) and adds the VERIFIER_FLOOR 0.4.303 refusal to the verifier install step
68
+ with:
69
+ evidence-source: caller
70
+ verifier-version: 0.4.310
71
+ compare-with-occ: "false"
72
+ shadow: "false"
@@ -28,8 +28,8 @@ jobs:
28
28
  uses: actions/checkout@v7
29
29
  with:
30
30
  repository: OmniNode-ai/omnibase_core
31
- # Auto-bumped by omnibase_core publish-downstream-pin-bump.yml to 2f90bd814b14.
32
- ref: 2f90bd814b140ed8f8dad74cc499b0976807e47d
31
+ # Auto-bumped by omnibase_core publish-downstream-pin-bump.yml to c880801d4dee.
32
+ ref: c880801d4deeaa1627535c8622ab6c4ab8cfbecd
33
33
  path: omnibase_core
34
34
 
35
35
  - name: Verify omnibase_core checkout
@@ -23,37 +23,6 @@ env:
23
23
  CACHE_VERSION: "0.1.0"
24
24
 
25
25
  jobs:
26
- # OMN-18854: the existing eligibility validator must feed the required
27
- # CI Summary. Other validations remain independent of this evidence gate.
28
- occ-preflight:
29
- if: github.event_name == 'pull_request' || github.event_name == 'merge_group'
30
- permissions:
31
- contents: read
32
- pull-requests: read
33
- uses: OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml@13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
34
- with:
35
- core-ref: 13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
36
- contracts-dir: contracts
37
- receipts-dir: drift/dod_receipts
38
-
39
- # OMN-18854: evidence admission has its own verdict; shape detectors and
40
- # their result aggregation do not branch directly on the evidence preflight.
41
- occ-eligibility:
42
- name: OCC Eligibility Admission
43
- runs-on: ubuntu-latest
44
- needs: occ-preflight
45
- if: always()
46
- steps:
47
- - name: Require eligible evidence on admission events
48
- run: |
49
- event="${{ github.event_name }}"
50
- if [[ "$event" == "pull_request" || "$event" == "merge_group" ]]; then
51
- if [[ "${{ needs.occ-preflight.result }}" != "success" ]]; then
52
- echo "::error::occ-preflight did not pass (result: ${{ needs.occ-preflight.result }})"
53
- exit 1
54
- fi
55
- fi
56
-
57
26
  # =============================================================================
58
27
  # JOB ORDERING RATIONALE (Fail-Fast Optimization)
59
28
  # =============================================================================
@@ -258,10 +227,6 @@ jobs:
258
227
  - name: Pre-commit dependencies come from package indexes (OMN-19666)
259
228
  run: bash tests/test_precommit_additional_dependencies_omn19666.sh
260
229
 
261
- # OMN-18854: the same focused regression runs before commit and in CI.
262
- - name: Verify OCC eligibility enforcement (OMN-18854)
263
- run: uv run pytest tests/scripts/test_occ_eligibility_enforcement.py -q
264
-
265
230
  # SYNC: Pre-commit hook 'validate-gitignore-baseline' at pre-commit stage (OMN-18033)
266
231
  # This step and the hook both pin released omnibase-core==0.47.23,
267
232
  # matching uv.lock and carrying the packaged baseline spec; move them together.
@@ -629,65 +594,52 @@ jobs:
629
594
 
630
595
  contract-compliance:
631
596
  name: Contract Compliance Check
632
- # OMNI_RUNNER_SELECTOR_V1 (OMN-16437): `uv sync` here resolves onex_change_control's
633
- # dependency set from the internal-only `.201` Tailscale PyPI mirror
634
- # (http://omninode-pc.tail75df5e.ts.net:3141/root/pypi/...).
635
- # onex-allow-internal-ip OMN-16437 reason="doc comment naming the host this fix routes around; not runnable"
636
- # `ubuntu-latest` is GitHub-hosted, non-tailnet, and cannot resolve that hostname.
637
- # Same defect class as OMN-16413 (omnibase_core#1579), OMN-16427
638
- # (omninode_infra#969), OMN-16428 (omnimarket), and OMN-16431 (omniclaude#2023,
639
- # same job name/shape) -- adopts the identical fork-aware selector: only an
640
- # ACTUAL fork PR (head repo != base repo) routes to the public ubuntu-latest
641
- # runner; every same-repo pull_request, push, and merge_group gets the
642
- # tailnet-connected self-hosted omnibase-ci fleet, which CAN reach the .201
643
- # mirror. This does NOT widen the trust boundary: untrusted fork code still
644
- # never reaches the self-hosted fleet.
645
- runs-on: >-
646
- ${{
647
- (github.event_name == 'pull_request' &&
648
- github.event.pull_request.head.repo.full_name != github.repository)
649
- && fromJSON(vars.OMNI_PUBLIC_PR_RUNS_ON_JSON || '["ubuntu-latest"]')
650
- || fromJSON(vars.OMNI_TRUSTED_CI_RUNS_ON_JSON || '["self-hosted","omnibase-ci"]')
651
- }}
597
+ # OMN-19998: public repository, GitHub-hosted runner only (RULING 2026-10-16T07:07:09Z).
598
+ # OMN-20074 S6: validate this repository's contracts with locked core.
599
+ runs-on: ubuntu-latest
652
600
  if: github.event_name == 'pull_request' || github.event_name == 'merge_group' || github.event_name == 'push'
653
601
  steps:
654
602
  - uses: actions/checkout@v7
655
- # OMN-20001: read the onex_change_control rev pinned in pyproject.toml,
656
- # never OCC's live default branch.
657
- - name: Resolve pinned onex_change_control rev
658
- id: occ-pin
659
- run: |
660
- rev="$(grep -oE 'onex_change_control\.git@[0-9a-f]{40}' pyproject.toml | head -1 | cut -d@ -f2)"
661
- [[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no pinned onex_change_control rev in pyproject.toml"; exit 1; }
662
- echo "rev=$rev" >> "$GITHUB_OUTPUT"
663
-
664
- - name: Checkout onex_change_control
665
- uses: actions/checkout@v7
666
- with:
667
- repository: OmniNode-ai/onex_change_control
668
- ref: ${{ steps.occ-pin.outputs.rev }}
669
- path: onex_change_control
670
-
671
603
  - uses: astral-sh/setup-uv@v7
672
604
  with:
673
605
  enable-cache: true
674
- cache-dependency-glob: 'onex_change_control/uv.lock'
606
+ cache-dependency-glob: uv.lock
675
607
 
676
- - name: Install onex_change_control
677
- working-directory: onex_change_control
678
- run: uv sync --locked --all-extras
608
+ - name: Install dependencies
609
+ run: uv sync --frozen
679
610
 
680
611
  - name: Validate contract YAML files
681
- working-directory: onex_change_control
682
612
  run: |
683
- CONTRACTS=$(find "$GITHUB_WORKSPACE/onex_change_control/contracts" -maxdepth 1 -name "OMN-*.yaml" 2>/dev/null)
684
- if [ -z "$CONTRACTS" ]; then
685
- echo "No contract YAML files found — skipping validation"
686
- exit 0
687
- fi
688
- uv run validate-yaml $CONTRACTS
689
- env:
690
- GH_TOKEN: ${{ github.token }}
613
+ set -euo pipefail
614
+ # Top-level ticket contracts only: contracts/v1 holds a different shape.
615
+ mapfile -t CONTRACTS < <(find contracts -maxdepth 1 -type f -name "OMN-*.yaml")
616
+ uv run python3 - "${CONTRACTS[@]}" <<'PY'
617
+ import sys
618
+ from pathlib import Path
619
+
620
+ from omnibase_core.models.errors.model_onex_error import ModelOnexError
621
+ from omnibase_core.models.ticket.model_ticket_contract import ModelTicketContract
622
+
623
+ # Named contracts, or every contracts/OMN-*.yaml when none are named.
624
+ paths = [Path(arg) for arg in sys.argv[1:]] or sorted(Path("contracts").glob("OMN-*.yaml"))
625
+ if not paths:
626
+ print("::error::contracts/ holds no OMN-*.yaml ticket contract")
627
+ sys.exit(1)
628
+
629
+ broken = []
630
+ for path in paths:
631
+ try:
632
+ ModelTicketContract.from_yaml(path.read_text(encoding="utf-8"))
633
+ except (OSError, ModelOnexError) as exc:
634
+ broken.append((path, " ".join(str(exc).split())))
635
+
636
+ for path, reason in broken:
637
+ print(f"::error file={path.as_posix()}::{path.as_posix()}: {reason}")
638
+ if broken:
639
+ print(f"ERROR: {len(broken)} of {len(paths)} ticket contract(s) fail omnibase_core's ModelTicketContract.")
640
+ sys.exit(1)
641
+ print(f"OK: {len(paths)} ticket contract(s) pass omnibase_core's ModelTicketContract.")
642
+ PY
691
643
 
692
644
  no-noncanonical-lifecycle-classes:
693
645
  name: no-noncanonical-lifecycle-classes
@@ -831,7 +783,7 @@ jobs:
831
783
  runs-on: ubuntu-latest
832
784
  timeout-minutes: 15
833
785
  env:
834
- CANONICAL_FILE_SHAPE_CORE: "omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5"
786
+ CANONICAL_FILE_SHAPE_CORE: "omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@031148215620031436cba30619bbae67c0bb38ad"
835
787
  steps:
836
788
  - name: Checkout code
837
789
  uses: actions/checkout@v7
@@ -875,32 +827,144 @@ jobs:
875
827
  PUSH_BEFORE: ${{ github.event.before }}
876
828
  run: |
877
829
  set -u
878
- base="${PR_BASE:-${MQ_BASE:-${PUSH_BEFORE:-}}}"
830
+ base="${PR_BASE:-${MQ_BASE:-}}"
831
+ # OMN-20868: release.yml fast-forwards main to a dev sha, so a push's
832
+ # `before` is the previous release and the range spans every dev PR
833
+ # since then, each already checked here against dev, including
834
+ # commits that predate this ratchet. A push whose HEAD is on dev is
835
+ # checked against the baseline; any other push diffs its own range.
836
+ if [ -z "$base" ] && [ -n "${PUSH_BEFORE:-}" ]; then
837
+ git fetch -q --no-tags origin +refs/heads/dev:refs/remotes/origin/dev
838
+ if git merge-base --is-ancestor HEAD refs/remotes/origin/dev; then
839
+ echo "push of a commit already on dev (fast-forward of ${PUSH_BEFORE}..HEAD); each commit was checked on its dev PR"
840
+ else
841
+ base="$PUSH_BEFORE"
842
+ fi
843
+ fi
879
844
  if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
880
845
  base="$(git merge-base "$base" HEAD)"
881
846
  uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
882
847
  python -m omnibase_core.validators.canonical_file_shape --base "$base" --head HEAD
883
848
  else
884
- echo "no base revision on this event; checking the tree against the baseline only"
849
+ echo "no diff base for this event; checking the tree against the baseline only"
885
850
  uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
886
851
  python -m omnibase_core.validators.canonical_file_shape --head HEAD
887
852
  fi
888
853
 
854
+ - name: Node-home positive control (planted node refused, clean tree accepted)
855
+ run: |
856
+ set -u
857
+ node_home() {
858
+ uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
859
+ python -m omnibase_core.nodes.node_node_home_check_compute.runtime_node_home_check "$@"
860
+ }
861
+ planted=src/omnimemory/nodes/node_zz_canary_planted_compute
862
+ mkdir -p "$planted"
863
+ printf 'name: node_zz_canary_planted_compute\n' > "$planted/contract.yaml"
864
+ printf 'class NodeZzCanaryPlantedCompute:\n pass\n' > "$planted/handler.py"
865
+ git add "$planted"
866
+ if node_home; then
867
+ echo "POSITIVE CONTROL FAILED: planted $planted was accepted"
868
+ exit 1
869
+ fi
870
+ echo "positive control: planted node refused"
871
+ git rm -q -r --cached "$planted"
872
+ rm -r "$planted"
873
+ node_home
874
+ echo "positive control: clean tree accepted"
875
+
876
+ - name: Refuse new ONEX nodes outside omnimarket (OMN-20702)
877
+ env:
878
+ EVENT_NAME: ${{ github.event_name }}
879
+ PR_BASE: ${{ github.event.pull_request.base.sha }}
880
+ MQ_BASE: ${{ github.event.merge_group.base_sha }}
881
+ PUSH_BEFORE: ${{ github.event.before }}
882
+ run: |
883
+ set -u
884
+ node_home() {
885
+ uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
886
+ python -m omnibase_core.nodes.node_node_home_check_compute.runtime_node_home_check "$@"
887
+ }
888
+ base="${PR_BASE:-${MQ_BASE:-${PUSH_BEFORE:-}}}"
889
+ if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
890
+ base="$(git merge-base "$base" HEAD)"
891
+ node_home --base "$base"
892
+ elif [ "$EVENT_NAME" = "pull_request" ] || [ "$EVENT_NAME" = "merge_group" ]; then
893
+ echo "node-home ratchet: no resolvable base revision on $EVENT_NAME; refusing"
894
+ exit 1
895
+ else
896
+ echo "no base revision on this event; checking the tree against HEAD"
897
+ node_home --base HEAD
898
+ fi
899
+
900
+ # OMN-19998: public-repository runner placement (RULING 2026-10-16T07:07:09Z,
901
+ # "Ci runners should be for private repos only"). omnibase_core's check refuses
902
+ # a job whose runs-on is, or can resolve to, a self-hosted label unless core's
903
+ # shrink-only baseline (shipped in the package, not editable here) records it,
904
+ # and refuses a baselined job that is new or newly self-hosted against the base.
905
+ # Same core release as the check-public-runner-placement pre-commit hook.
906
+ # Unconditional: no `if:`, no `needs:`; a CI Summary member below.
907
+ public-runner-placement:
908
+ name: Public Runner Placement (OMN-19998)
909
+ runs-on: ubuntu-latest
910
+ timeout-minutes: 10
911
+ env:
912
+ # The published release whose tag v0.47.46 is the pre-commit hook's rev.
913
+ RUNNER_PLACEMENT_CORE: "omnibase-core==0.47.46"
914
+ steps:
915
+ - name: Checkout code
916
+ uses: actions/checkout@v7
917
+ with:
918
+ fetch-depth: 0
919
+ - name: Set up Python
920
+ uses: actions/setup-python@v7
921
+ with:
922
+ python-version: "3.12"
923
+ - name: Install uv
924
+ uses: astral-sh/setup-uv@v7
925
+ with:
926
+ version: "0.8.3"
927
+ - name: Positive control (planted self-hosted job refused)
928
+ run: |
929
+ set -u
930
+ printf 'on: push\njobs:\n planted:\n runs-on: [self-hosted, omnibase-ci]\n steps:\n - run: "true"\n' \
931
+ > .github/workflows/zz-canary-planted.yml
932
+ git add .github/workflows/zz-canary-planted.yml
933
+ if uv run --no-project --with "$RUNNER_PLACEMENT_CORE" \
934
+ python -m omnibase_core.handlers.handler_public_runner_placement_cli --repo omnimemory \
935
+ .github/workflows/zz-canary-planted.yml; then
936
+ echo "POSITIVE CONTROL FAILED: planted self-hosted job was accepted"
937
+ exit 1
938
+ fi
939
+ echo "positive control: planted self-hosted job refused"
940
+ git rm -q --cached .github/workflows/zz-canary-planted.yml
941
+ rm .github/workflows/zz-canary-planted.yml
942
+ - name: Refuse new self-hosted jobs in this public repository
943
+ env:
944
+ PR_BASE: ${{ github.event.pull_request.base.sha }}
945
+ MQ_BASE: ${{ github.event.merge_group.base_sha }}
946
+ PUSH_BEFORE: ${{ github.event.before }}
947
+ run: |
948
+ set -u
949
+ base="${PR_BASE:-${MQ_BASE:-${PUSH_BEFORE:-}}}"
950
+ args=(--repo omnimemory --visibility public)
951
+ if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
952
+ args+=(--base-ref "$(git merge-base "$base" HEAD)")
953
+ else
954
+ echo "no base revision on this event; checking the tree against the baseline only"
955
+ fi
956
+ uv run --no-project --with "$RUNNER_PLACEMENT_CORE" \
957
+ python -m omnibase_core.handlers.handler_public_runner_placement_cli "${args[@]}"
958
+
889
959
  ci-summary:
890
960
  name: CI Summary
891
961
  runs-on: ubuntu-latest
892
- needs: [migration-freeze, lint, pyright, onex-validation, transport-import-guard, contract-validation, io-audit, check-handshake, test-select, tests-gate, compliance, contract-compliance, no-noncanonical-lifecycle-classes, detect-secrets, shape-gate-independence, canonical-file-shape, occ-eligibility]
962
+ needs: [migration-freeze, lint, pyright, onex-validation, transport-import-guard, contract-validation, io-audit, check-handshake, test-select, tests-gate, compliance, contract-compliance, no-noncanonical-lifecycle-classes, detect-secrets, shape-gate-independence, canonical-file-shape, public-runner-placement]
893
963
  if: always()
894
964
 
895
965
  steps:
896
966
  - name: Check test results
897
967
  run: |
898
- # OMN-18854: require the admission verdict on every event. That job
899
- # judges eligibility on PR/queue events and passes non-admission events.
900
- if [[ "${{ needs.occ-eligibility.result }}" != "success" ]]; then
901
- echo "::error::occ-eligibility did not pass (result: ${{ needs.occ-eligibility.result }})"
902
- exit 1
903
- fi
904
968
  # OMN-14350: strict fail-closed gate on the non-canonical lifecycle-class
905
969
  # ratchet - only 'success' passes; skipped/cancelled/failure ALL block. It is
906
970
  # in needs: so this job WAITS for it (no race).
@@ -927,6 +991,12 @@ jobs:
927
991
  echo "::error::canonical-file-shape ratchet did not pass (result: ${{ needs.canonical-file-shape.result }}) - fail-closed (OMN-20304)"
928
992
  exit 1
929
993
  fi
994
+ # OMN-19998: strict fail-closed gate on public-repository runner
995
+ # placement - only 'success' passes; skipped/cancelled/failure ALL block.
996
+ if [[ "${{ needs.public-runner-placement.result }}" != "success" ]]; then
997
+ echo "::error::public-runner-placement did not pass (result: ${{ needs.public-runner-placement.result }}) - fail-closed (OMN-19998)"
998
+ exit 1
999
+ fi
930
1000
  migration_freeze="${{ needs.migration-freeze.result }}"
931
1001
  lint="${{ needs.lint.result }}"
932
1002
  pyright="${{ needs.pyright.result }}"
@@ -3,8 +3,10 @@
3
3
 
4
4
  # Contract Validation Gate
5
5
  #
6
- # Validates ONEX ticket contracts for PRs in omnimemory using the
7
- # reusable composite action from onex_change_control.
6
+ # Validates the ONEX ticket contract of a PR's branch ticket with the installed
7
+ # omnibase_core ModelTicketContract, at omnimemory's locked core version
8
+ # (OMN-20074). Core refuses a binds_ac entry that is not a criterion label and a
9
+ # binds_ac item with check_type command_exit_0 (omnibase_core#1935).
8
10
  #
9
11
  # Required status check: "contract-validation"
10
12
  # Must pass (or skip) before merging to main.
@@ -39,29 +41,11 @@ concurrency:
39
41
  jobs:
40
42
  contract-validation:
41
43
  name: contract-validation
42
- # OMNI_RUNNER_SELECTOR_V1 - trusted events default to self-hosted omnibase-ci; pull_request defaults to ubuntu-latest
43
- runs-on: >-
44
- ${{
45
- github.event_name != 'pull_request'
46
- && fromJSON(vars.OMNI_TRUSTED_CI_RUNS_ON_JSON || '["self-hosted","omnibase-ci"]')
47
- || fromJSON(vars.OMNI_PUBLIC_PR_RUNS_ON_JSON || '["ubuntu-latest"]')
48
- }}
44
+ # OMN-19998: public repository, GitHub-hosted runner only (RULING 2026-10-16T07:07:09Z)
45
+ runs-on: ubuntu-latest
49
46
  timeout-minutes: 10
50
47
 
51
48
  steps:
52
- - name: Auth preflight — confirm onex_change_control action is accessible
53
- id: auth-preflight
54
- env:
55
- GH_TOKEN: ${{ github.token }}
56
- run: |
57
- echo "Checking visibility of OmniNode-ai/onex_change_control..."
58
- if gh api repos/OmniNode-ai/onex_change_control --silent; then
59
- echo "::notice::onex_change_control repo is accessible."
60
- else
61
- echo "::error::Cannot reach OmniNode-ai/onex_change_control. Composite action will not resolve."
62
- exit 1
63
- fi
64
-
65
49
  - name: Resolve branch name
66
50
  id: resolve-branch
67
51
  env:
@@ -92,13 +76,88 @@ jobs:
92
76
  echo "resolved_branch=$BRANCH" >> "$GITHUB_OUTPUT"
93
77
  echo "::notice::Resolved branch name: $BRANCH"
94
78
 
79
+ - name: Check out calling repository
80
+ if: steps.resolve-branch.outputs.skip_validation != 'true'
81
+ uses: actions/checkout@v7
82
+ with:
83
+ ref: ${{ github.sha }}
84
+ persist-credentials: false
85
+
86
+ - name: Set up uv
87
+ if: steps.resolve-branch.outputs.skip_validation != 'true'
88
+ uses: astral-sh/setup-uv@v7
89
+ with:
90
+ enable-cache: true
91
+ cache-dependency-glob: uv.lock
92
+
95
93
  - name: Run contract validation
96
94
  id: validate-contract
97
95
  if: steps.resolve-branch.outputs.skip_validation != 'true'
98
- uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@725d2967b031d7065efd41d0751f903638202cc1
99
- with:
100
- branch-name: ${{ steps.resolve-branch.outputs.resolved_branch }}
101
- contracts-path: contracts
96
+ env:
97
+ BRANCH: ${{ steps.resolve-branch.outputs.resolved_branch }}
98
+ UV_HTTP_TIMEOUT: "600"
99
+ run: |
100
+ set -euo pipefail
101
+
102
+ TICKET_ID=$(printf '%s\n' "$BRANCH" | grep -ioE 'OMN-[0-9]+' | head -n 1 | tr '[:lower:]' '[:upper:]' || true)
103
+ echo "ticket-id=$TICKET_ID" >> "$GITHUB_OUTPUT"
104
+
105
+ if [[ -z "$TICKET_ID" ]]; then
106
+ echo "validation-status=skipped" >> "$GITHUB_OUTPUT"
107
+ echo "::notice::No OMN-XXXX ticket ID found in branch name; contract validation skipped."
108
+ exit 0
109
+ fi
110
+
111
+ CONTRACT_PATH="contracts/$TICKET_ID.yaml"
112
+ if [[ ! -f "$CONTRACT_PATH" ]]; then
113
+ CONTRACT_PATH="contracts/${TICKET_ID,,}.yaml"
114
+ fi
115
+ if [[ ! -f "$CONTRACT_PATH" ]]; then
116
+ echo "validation-status=skipped" >> "$GITHUB_OUTPUT"
117
+ echo "::notice::No contract file found for $TICKET_ID in contracts/; contract validation skipped."
118
+ exit 0
119
+ fi
120
+
121
+ for attempt in 1 2 3; do
122
+ if uv sync --locked --no-dev; then
123
+ break
124
+ fi
125
+ if [[ "$attempt" -eq 3 ]]; then
126
+ echo "validation-status=failed" >> "$GITHUB_OUTPUT"
127
+ echo "::error::Failed to sync omnimemory dependencies after 3 attempts."
128
+ exit 1
129
+ fi
130
+ sleep "$((10 * attempt))"
131
+ done
132
+
133
+ if uv run --no-sync python3 - "$CONTRACT_PATH" <<'PY'
134
+ import sys
135
+ from pathlib import Path
136
+
137
+ from omnibase_core.models.errors.model_onex_error import ModelOnexError
138
+ from omnibase_core.models.ticket.model_ticket_contract import ModelTicketContract
139
+
140
+ paths = [Path(arg) for arg in sys.argv[1:]]
141
+ broken = []
142
+ for path in paths:
143
+ try:
144
+ ModelTicketContract.from_yaml(path.read_text(encoding="utf-8"))
145
+ except (OSError, ModelOnexError) as exc:
146
+ broken.append((path, " ".join(str(exc).split())))
147
+
148
+ for path, reason in broken:
149
+ print(f"::error file={path.as_posix()}::{path.as_posix()}: {reason}")
150
+ if broken:
151
+ print(f"ERROR: {len(broken)} of {len(paths)} ticket contract(s) fail omnibase_core's ModelTicketContract.")
152
+ sys.exit(1)
153
+ print(f"OK: {len(paths)} ticket contract(s) pass omnibase_core's ModelTicketContract.")
154
+ PY
155
+ then
156
+ echo "validation-status=passed" >> "$GITHUB_OUTPUT"
157
+ else
158
+ echo "validation-status=failed" >> "$GITHUB_OUTPUT"
159
+ exit 1
160
+ fi
102
161
 
103
162
  - name: Report validation result
104
163
  if: always()
@@ -127,6 +186,7 @@ jobs:
127
186
  exit 1
128
187
  ;;
129
188
  *)
130
- echo "::warning::Unexpected validation status: '$VALIDATION_STATUS'. Treating as skipped."
189
+ echo "::error::Contract validation did not finish: '$VALIDATION_STATUS'."
190
+ exit 1
131
191
  ;;
132
192
  esac