omninode-memory 0.18.2__tar.gz → 0.18.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/required-checks.yaml +50 -1
  2. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/auto-merge.yml +35 -1
  3. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/auto-tag-on-merge.yml +4 -0
  4. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/ban-hardcoded-runner-ip.yml +6 -1
  5. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-occ-autobind.yml +9 -7
  6. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-occ-companion-effect.yml +3 -2
  7. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/call-reject-skip.yml +5 -1
  8. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/check-handshake.yml +6 -3
  9. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/ci.yml +290 -3
  10. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/contract-validation.yml +1 -1
  11. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/dep-provenance-gate.yml +4 -0
  12. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/docs-validate.yml +5 -1
  13. omninode_memory-0.18.4/.github/workflows/hardcoded-model-config.yml +24 -0
  14. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/imperative-contract-guard.yml +6 -2
  15. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/kb-doc-gate.yml +5 -1
  16. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/main-target-guard.yml +4 -0
  17. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/omni-standards-compliance.yml +4 -0
  18. omninode_memory-0.18.4/.github/workflows/pin-resolvability-gate.yml +111 -0
  19. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/pr-title-check.yml +4 -0
  20. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/pre-commit.yml +4 -0
  21. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/public-repo-hygiene.yml +6 -2
  22. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/release.yml +18 -0
  23. omninode_memory-0.18.4/.github/workflows/secrets-baseline-wiring.yml +39 -0
  24. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/security-scan.yml +5 -1
  25. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/stale-todo-gate.yml +4 -0
  26. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/todo-audit-on-merge.yml +4 -0
  27. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/url-authority-gate.yml +4 -0
  28. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/validate-validator-requirements.yml +4 -0
  29. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.gitignore +40 -0
  30. omninode_memory-0.18.4/.onex_ratchets/canonical_file_shape_baseline.txt +75 -0
  31. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.pre-commit-config.yaml +153 -30
  32. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.public-repo-hygiene.yaml +1 -0
  33. omninode_memory-0.18.4/.secrets.baseline +500 -0
  34. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/CHANGELOG.md +20 -0
  35. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/CLAUDE.md +2 -2
  36. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/PKG-INFO +16 -16
  37. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/README.md +13 -13
  38. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/architecture-handshakes/validator-requirements-baseline.yaml +0 -10
  39. omninode_memory-0.18.4/config/hardcoded_model_config_baseline.yaml +53 -0
  40. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/pyproject.toml +9 -3
  41. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_no_hardcoded_bolt.sh +19 -5
  42. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_adjacency.yaml +14 -0
  43. omninode_memory-0.18.4/scripts/ci/verify_pypi_pin_resolvability.py +348 -0
  44. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validate_ci_precommit_alignment.py +41 -0
  45. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +8 -3
  46. omninode_memory-0.18.4/scripts/validation/check_no_internal_ips.sh +17 -0
  47. omninode_memory-0.18.4/scripts/validation/check_precommit_additional_dependencies.sh +82 -0
  48. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_naming.py +14 -9
  49. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_no_backward_compatibility.py +25 -11
  50. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_no_env_fallbacks.py +13 -2
  51. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +1 -1
  52. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/contract.yaml +0 -9
  53. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +5 -31
  54. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +3 -23
  55. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +3 -12
  56. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/contract.yaml +1 -4
  57. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/contract.yaml +3 -10
  58. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +3 -12
  59. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +3 -12
  60. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/wiring.py +24 -29
  61. omninode_memory-0.18.4/tests/fixtures/omn19666/pre-commit-git-dependency.yaml +12 -0
  62. omninode_memory-0.18.4/tests/fixtures/omn19666/pre-commit-pypi-dependency.yaml +12 -0
  63. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_golden_chain_qdrant_ingestion.py +10 -1
  64. omninode_memory-0.18.4/tests/scripts/test_occ_eligibility_enforcement.py +165 -0
  65. omninode_memory-0.18.4/tests/scripts/test_pin_resolvability_conflict_report.py +115 -0
  66. omninode_memory-0.18.4/tests/scripts/test_pin_resolvability_gate_workflow.py +129 -0
  67. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_contract_validation.py +58 -53
  68. omninode_memory-0.18.4/tests/test_precommit_additional_dependencies_omn19666.sh +23 -0
  69. omninode_memory-0.18.4/tests/test_precommit_staged_scope_omn19612.py +205 -0
  70. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_routing_boot_resolvable.py +1 -1
  71. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_wiring.py +41 -1
  72. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_validate_ci_precommit_alignment.py +20 -1
  73. omninode_memory-0.18.4/tests/unit/test_workflow_sibling_pins.py +94 -0
  74. omninode_memory-0.18.4/tests/workflows/test_auto_merge_ready_for_review_omn19216.py +88 -0
  75. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/workflows/test_auto_merge_workflow.py +19 -0
  76. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/uv.lock +15 -15
  77. omninode_memory-0.18.2/.secrets.baseline +0 -196
  78. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.claude/architecture-handshake.md +0 -0
  79. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.env.example +0 -0
  80. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.flake8 +0 -0
  81. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/CODE_OF_CONDUCT.md +0 -0
  82. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/CONTRIBUTING.md +0 -0
  83. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  84. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  85. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  86. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/dependabot.yml +0 -0
  87. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/build-and-push-migrate-image.yml +0 -0
  88. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/release-dry-run.yml +0 -0
  89. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/sibling-lock-refresh.yml +0 -0
  90. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.github/workflows/validator-runtime-profiles.yml +0 -0
  91. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.kb-doc-gate.yaml +0 -0
  92. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.markdown-link-check.json +0 -0
  93. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.onex_ratchets/noncanonical_class_allowlist.yaml +0 -0
  94. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.pre-commit-hooks/reject-deploy-gate-skip-token.sh +0 -0
  95. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.serena/project.yml +0 -0
  96. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/.yamlfmt +0 -0
  97. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/LICENSE +0 -0
  98. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/SECURITY.md +0 -0
  99. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/architecture-handshakes/validator-requirements.yaml +0 -0
  100. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/contract.yaml +0 -0
  101. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/contracts/OMN-12245.yaml +0 -0
  102. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
  103. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/002_create_memories_table.sql +0 -0
  104. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
  105. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
  106. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
  107. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +0 -0
  108. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
  109. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
  110. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/deployment/docker/Dockerfile.migrate +0 -0
  111. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docker-compose.prod.yml +0 -0
  112. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docker-compose.yml +0 -0
  113. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-black.png +0 -0
  114. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-full-color.svg +0 -0
  115. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-icon-white.png +0 -0
  116. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-black.png +0 -0
  117. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-full-color.svg +0 -0
  118. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-inline-white.png +0 -0
  119. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-black.png +0 -0
  120. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-full-color.svg +0 -0
  121. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-stacked-white.png +0 -0
  122. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-black.svg +0 -0
  123. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-grey.svg +0 -0
  124. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/docs/assets/brand/omninode-wordmark-white.svg +0 -0
  125. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/examples/__init__.py +0 -0
  126. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/examples/advanced_architecture_demo.py +0 -0
  127. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/pyrightconfig.json +0 -0
  128. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/__init__.py +0 -0
  129. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_dep_provenance.py +0 -0
  130. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/check_migration_freeze.sh +0 -0
  131. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/__init__.py +0 -0
  132. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/collect_changed_files.py +0 -0
  133. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/detect_test_paths.py +0 -0
  134. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/occ_manual_replay_precheck.py +0 -0
  135. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/run_runtime_profiles_validator.py +0 -0
  136. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_loader.py +0 -0
  137. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/ci/test_selection_models.py +0 -0
  138. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/graphify_to_memgraph.py +0 -0
  139. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/graphify_to_qdrant.py +0 -0
  140. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/__init__.py +0 -0
  141. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/check_ai_slop.py +0 -0
  142. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/foundation_validation_common.py +0 -0
  143. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_enum_casing.py +0 -0
  144. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_http_imports.py +0 -0
  145. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_kafka_imports.py +0 -0
  146. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_model_locations.py +0 -0
  147. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_pydantic_patterns.py +0 -0
  148. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_secrets.py +0 -0
  149. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_single_class_per_file.py +0 -0
  150. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/scripts/validation/validate_spdx_headers.py +0 -0
  151. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/__init__.py +0 -0
  152. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/_compat_imports.py +0 -0
  153. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/__init__.py +0 -0
  154. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_concurrency.py +0 -0
  155. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_correlation_context.py +0 -0
  156. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_db_url.py +0 -0
  157. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_error_sanitizer.py +0 -0
  158. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_handler_constants.py +0 -0
  159. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_health_manager.py +0 -0
  160. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_metrics_counter.py +0 -0
  161. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_observability_wrapper.py +0 -0
  162. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_pii_detector.py +0 -0
  163. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_resource_manager.py +0 -0
  164. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/adapters/adapter_retry_utils.py +0 -0
  165. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/bootstrap.py +0 -0
  166. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/__init__.py +0 -0
  167. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/__init__.py +0 -0
  168. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
  169. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
  170. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
  171. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
  172. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_context_item_type.py +0 -0
  173. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_data_type.py +0 -0
  174. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
  175. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_error_code.py +0 -0
  176. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
  177. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
  178. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
  179. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
  180. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_memory_type.py +0 -0
  181. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_migration_status.py +0 -0
  182. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_node_type.py +0 -0
  183. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_operation_status.py +0 -0
  184. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_preferred_tone.py +0 -0
  185. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_priority_level.py +0 -0
  186. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
  187. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
  188. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_severity.py +0 -0
  189. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_subscription_status.py +0 -0
  190. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_technical_level.py +0 -0
  191. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/enums/enum_trust_level.py +0 -0
  192. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/errors/__init__.py +0 -0
  193. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/errors/embedding_errors.py +0 -0
  194. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/__init__.py +0 -0
  195. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/__init__.py +0 -0
  196. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
  197. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
  198. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_intent_graph_contract.yaml +0 -0
  199. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
  200. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
  201. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
  202. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
  203. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
  204. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
  205. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_intent.py +0 -0
  206. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_subscription.py +0 -0
  207. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/handler_subscription_contract.yaml +0 -0
  208. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/models/__init__.py +0 -0
  209. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
  210. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/__init__.py +0 -0
  211. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/__init__.py +0 -0
  212. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
  213. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
  214. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
  215. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
  216. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
  217. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
  218. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
  219. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/__init__.py +0 -0
  220. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
  221. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_embedding_config.py +0 -0
  222. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
  223. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
  224. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
  225. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
  226. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
  227. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_postgres_config.py +0 -0
  228. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
  229. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
  230. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
  231. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
  232. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
  233. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/container/__init__.py +0 -0
  234. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/__init__.py +0 -0
  235. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
  236. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
  237. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
  238. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
  239. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
  240. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/__init__.py +0 -0
  241. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_context.py +0 -0
  242. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
  243. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
  244. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_request.py +0 -0
  245. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_memory_response.py +0 -0
  246. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
  247. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
  248. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/core/model_provenance.py +0 -0
  249. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/__init__.py +0 -0
  250. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
  251. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
  252. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
  253. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
  254. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
  255. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
  256. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
  257. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/crawl/types.py +0 -0
  258. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/__init__.py +0 -0
  259. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
  260. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
  261. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/__init__.py +0 -0
  262. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
  263. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_configuration.py +0 -0
  264. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
  265. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_error_details.py +0 -0
  266. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
  267. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_health_response.py +0 -0
  268. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
  269. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
  270. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
  271. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_notes.py +0 -0
  272. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_priority.py +0 -0
  273. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
  274. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_semver.py +0 -0
  275. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
  276. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_system_health.py +0 -0
  277. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_tags.py +0 -0
  278. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
  279. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
  280. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/foundation/model_user.py +0 -0
  281. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/__init__.py +0 -0
  282. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
  283. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
  284. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
  285. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
  286. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
  287. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/__init__.py +0 -0
  288. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_item.py +0 -0
  289. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_query.py +0 -0
  290. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
  291. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
  292. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
  293. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/__init__.py +0 -0
  294. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/model_persona_signal.py +0 -0
  295. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/persona/model_user_persona_v1.py +0 -0
  296. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/__init__.py +0 -0
  297. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
  298. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
  299. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
  300. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/__init__.py +0 -0
  301. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_config.py +0 -0
  302. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_health.py +0 -0
  303. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/service/model_service_registry.py +0 -0
  304. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/__init__.py +0 -0
  305. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/constants.py +0 -0
  306. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
  307. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
  308. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/subscription/model_subscription.py +0 -0
  309. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/__init__.py +0 -0
  310. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_audit.py +0 -0
  311. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
  312. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
  313. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_concurrency.py +0 -0
  314. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
  315. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
  316. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
  317. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
  318. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_health_status.py +0 -0
  319. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
  320. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
  321. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_match.py +0 -0
  322. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
  323. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_pii_type.py +0 -0
  324. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
  325. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
  326. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_config.py +0 -0
  327. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
  328. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
  329. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/models/utils/model_system_health.py +0 -0
  330. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/__init__.py +0 -0
  331. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/base.py +0 -0
  332. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
  333. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
  334. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
  335. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
  336. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
  337. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/__init__.py +0 -0
  338. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/adapters/__init__.py +0 -0
  339. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/__init__.py +0 -0
  340. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/handler_agent_learning_retrieval.py +0 -0
  341. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/__init__.py +0 -0
  342. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_request.py +0 -0
  343. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_response.py +0 -0
  344. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
  345. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
  346. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
  347. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/mappers/__init__.py +0 -0
  348. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/mappers/util_intent_mapping.py +0 -0
  349. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
  350. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
  351. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
  352. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
  353. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
  354. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
  355. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
  356. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
  357. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
  358. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
  359. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
  360. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/__init__.py +0 -0
  361. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/adapter_kreuzberg_client.py +0 -0
  362. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
  363. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
  364. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
  365. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
  366. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
  367. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
  368. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
  369. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
  370. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
  371. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
  372. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
  373. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
  374. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
  375. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
  376. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
  377. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
  378. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
  379. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  380. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/__init__.py +0 -0
  381. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/adapter_embedding_client.py +0 -0
  382. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
  383. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/contract_descriptor.py +0 -0
  384. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
  385. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
  386. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_decay.py +0 -0
  387. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_fusion.py +0 -0
  388. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
  389. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
  390. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
  391. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
  392. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
  393. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
  394. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
  395. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
  396. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
  397. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
  398. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
  399. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
  400. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
  401. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
  402. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
  403. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
  404. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
  405. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
  406. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
  407. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
  408. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
  409. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
  410. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
  411. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
  412. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
  413. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
  414. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
  415. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
  416. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/__init__.py +0 -0
  417. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/handlers/__init__.py +0 -0
  418. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/handlers/handler_persona_classify.py +0 -0
  419. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/__init__.py +0 -0
  420. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_request.py +0 -0
  421. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_result.py +0 -0
  422. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/__init__.py +0 -0
  423. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/adapters/__init__.py +0 -0
  424. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/adapters/adapter_postgres_persona.py +0 -0
  425. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/contract.yaml +0 -0
  426. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/__init__.py +0 -0
  427. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_request.py +0 -0
  428. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_response.py +0 -0
  429. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
  430. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
  431. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
  432. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
  433. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
  434. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
  435. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
  436. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
  437. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
  438. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
  439. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
  440. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
  441. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
  442. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
  443. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
  444. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/__init__.py +0 -0
  445. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/base_protocols.py +0 -0
  446. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/data_models.py +0 -0
  447. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/error_models.py +0 -0
  448. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_embedding.py +0 -0
  449. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
  450. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
  451. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
  452. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
  453. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/__init__.py +0 -0
  454. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/adapters.py +0 -0
  455. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/contract_topics.py +0 -0
  456. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/dispatch_handlers.py +0 -0
  457. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/handler_lifecycle.py +0 -0
  458. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/handler_lifecycle_contract.yaml +0 -0
  459. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/introspection.py +0 -0
  460. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/message_type_registration.py +0 -0
  461. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/runtime/plugin.py +0 -0
  462. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/secrets.py +0 -0
  463. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/settings.py +0 -0
  464. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/__init__.py +0 -0
  465. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/contract_linter.py +0 -0
  466. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/validators/__init__.py +0 -0
  467. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/tools/validators/validator_contract.py +0 -0
  468. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/src/omnimemory/topics.py +0 -0
  469. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/__init__.py +0 -0
  470. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/conftest.py +0 -0
  471. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/__init__.py +0 -0
  472. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/test_ban_hardcoded_runner_ip_scope.py +0 -0
  473. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/gates/test_consumer_group_name_authorization.py +0 -0
  474. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/__init__.py +0 -0
  475. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/__init__.py +0 -0
  476. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
  477. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
  478. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
  479. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
  480. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
  481. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
  482. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/test_handler_intent.py +0 -0
  483. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/handlers/test_handler_semantic_compute.py +0 -0
  484. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/__init__.py +0 -0
  485. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/conftest.py +0 -0
  486. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/__init__.py +0 -0
  487. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
  488. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
  489. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
  490. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_entry_point_discovery.py +0 -0
  491. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_golden_chain_memgraph_ingestion.py +0 -0
  492. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
  493. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_handler_subscription.py +0 -0
  494. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_node_agent_coordinator.py +0 -0
  495. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/integration/test_persona_round_trip.py +0 -0
  496. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/__init__.py +0 -0
  497. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/contracts/__init__.py +0 -0
  498. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/contracts/test_extended_contracts.py +0 -0
  499. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/events/__init__.py +0 -0
  500. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/events/test_model_intent_classified_event.py +0 -0
  501. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/models/test_frozen_boundary_models.py +0 -0
  502. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/__init__.py +0 -0
  503. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
  504. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
  505. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
  506. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
  507. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
  508. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
  509. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_contract_descriptor.py +0 -0
  510. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_dispatch_entrypoint_contract.py +0 -0
  511. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
  512. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
  513. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
  514. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_navigation_history_reducer/__init__.py +0 -0
  515. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
  516. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_similarity_compute/__init__.py +0 -0
  517. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
  518. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/scripts/__init__.py +0 -0
  519. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/scripts/test_check_dep_provenance.py +0 -0
  520. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_bootstrap.py +0 -0
  521. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_concurrency.py +0 -0
  522. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_config_models.py +0 -0
  523. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_contract_version.py +0 -0
  524. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_db_url.py +0 -0
  525. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_foundation.py +0 -0
  526. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_health_manager.py +0 -0
  527. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_migration_progress.py +0 -0
  528. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_node_enforcement.py +0 -0
  529. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_node_imports.py +0 -0
  530. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_observability_manager.py +0 -0
  531. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_observability_metrics.py +0 -0
  532. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_performance.py +0 -0
  533. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_resource_manager.py +0 -0
  534. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_secrets_provider.py +0 -0
  535. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_semantic_compute_policy_config.py +0 -0
  536. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_settings.py +0 -0
  537. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/test_validation_scripts.py +0 -0
  538. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/__init__.py +0 -0
  539. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/__init__.py +0 -0
  540. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/test_adapter_pii_detector.py +0 -0
  541. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/adapters/test_pii_live_call_paths.py +0 -0
  542. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/__init__.py +0 -0
  543. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/adapters/__init__.py +0 -0
  544. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
  545. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/handlers/test_subscription_typing.py +0 -0
  546. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/__init__.py +0 -0
  547. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/fixtures/omn16765/hybrid_retrieval_corpus.json +0 -0
  548. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_activation_decay.py +0 -0
  549. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_decay_ranking.py +0 -0
  550. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_agent_learning_retrieval.py +0 -0
  551. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_handler_qdrant.py +0 -0
  552. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_hybrid_retrieval_fusion.py +0 -0
  553. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
  554. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
  555. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
  556. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
  557. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
  558. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
  559. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
  560. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
  561. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
  562. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
  563. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_navigation_history_reducer_contract.py +0 -0
  564. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_node_agent_learning_retrieval_models.py +0 -0
  565. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_persona_builder.py +0 -0
  566. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/nodes/test_persona_storage_retrieval.py +0 -0
  567. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/__init__.py +0 -0
  568. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/conftest.py +0 -0
  569. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_adapters.py +0 -0
  570. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_contract_handler_completeness.py +0 -0
  571. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_contract_topics.py +0 -0
  572. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_dispatch_handlers.py +0 -0
  573. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_introspection.py +0 -0
  574. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_memory_subscription_group_is_authorized.py +0 -0
  575. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_message_type_registration.py +0 -0
  576. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin.py +0 -0
  577. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
  578. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_integration_wiring.py +0 -0
  579. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
  580. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/runtime/test_standalone_handler_contracts.py +0 -0
  581. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/__init__.py +0 -0
  582. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_check_ai_slop.py +0 -0
  583. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_collect_changed_files.py +0 -0
  584. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/scripts/test_occ_manual_replay_precheck.py +0 -0
  585. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_auto_tag_app_token_push_omn18662.py +0 -0
  586. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_ci_workflow_shape.py +0 -0
  587. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_contract_linter.py +0 -0
  588. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_detect_test_paths.py +0 -0
  589. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_dispatch_retrieval_config.py +0 -0
  590. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_entry_points.py +0 -0
  591. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_graphify_to_memgraph.py +0 -0
  592. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_graphify_to_qdrant.py +0 -0
  593. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
  594. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_ingestion_models.py +0 -0
  595. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_model_user_persona_v1.py +0 -0
  596. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_no_duplicate_node_uuids.py +0 -0
  597. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_occ_companion_effect_edited_trigger_omn_18334.py +0 -0
  598. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_persona_enums.py +0 -0
  599. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_scope_mapping_config.py +0 -0
  600. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_sql_placeholders.py +0 -0
  601. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/unit/test_validate_kafka_imports.py +0 -0
  602. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/tests/workflows/__init__.py +0 -0
  603. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/validate_architecture_improvements.py +0 -0
  604. {omninode_memory-0.18.2 → omninode_memory-0.18.4}/validation/runtime_profiles_allowlist.yaml +0 -0
@@ -14,9 +14,23 @@
14
14
  #
15
15
  # Applied via: gh api repos/OmniNode-ai/omnimemory/branches/main/protection -X PUT
16
16
  # Mode: strict (branch must be up-to-date before merging)
17
- # Total required checks: 11
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"
26
+ 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.
33
+
20
34
  # -- Phase 1: Quick Validation (parallel, ~2-5 min) -------------------------
21
35
 
22
36
  - name: "Migration Freeze Check"
@@ -75,6 +89,41 @@ required_checks:
75
89
  condition: "Skipped when no Python/Markdown files changed in the PR diff"
76
90
  rationale: "Prevents AI-generated slop patterns from entering the codebase (OMN-2972)"
77
91
 
92
+ - name: "Detect Secrets"
93
+ workflow: ci.yml
94
+ job_id: detect-secrets
95
+ conditional: false
96
+ rationale: >-
97
+ OMN-18669. Judges the tracked set against .secrets.baseline with
98
+ detect-secrets-hook. Gates merges through the required CI Summary
99
+ context, which needs: this job and accepts only a success result --
100
+ skipped, cancelled and failure all block. Its selection and exclusions
101
+ are identical to the detect-secrets pre-commit hook by construction;
102
+ tests/unit/test_validate_ci_precommit_alignment.py fails if the pair
103
+ drifts apart.
104
+
105
+ - name: "Shape-Gate Independence (OMN-20298)"
106
+ workflow: ci.yml
107
+ job_id: shape-gate-independence
108
+ conditional: false
109
+ rationale: >-
110
+ OMN-20298. Refuses any shape-gate detector job that depends on the
111
+ change-control preflight. Unconditional (no needs, no if); gates merges
112
+ through the required CI Summary context, which needs: this job and
113
+ accepts only a success result.
114
+
115
+ - name: "Canonical File Shape (OMN-20304)"
116
+ workflow: ci.yml
117
+ job_id: canonical-file-shape
118
+ conditional: false
119
+ rationale: >-
120
+ OMN-20304. Refuses a new code file outside the canonical locations, new
121
+ imperative SKILL.md lines and any new baseline, allowlist or suppression
122
+ entry, against the shrink-only
123
+ .onex_ratchets/canonical_file_shape_baseline.txt. Gates merges through
124
+ the required CI Summary context, which needs: this job and accepts only a
125
+ success result.
126
+
78
127
  # -- Phase 2: Full Test Suite ------------------------------------------------
79
128
 
80
129
  - name: "Tests"
@@ -21,11 +21,21 @@
21
21
  # workflow is NOT a required status check on dev, so narrowing it cannot
22
22
  # wedge branch protection (verified live via required_status_checks readback
23
23
  # before landing).
24
+ # OMN-19216 (2026-09-22): RE-ADD `ready_for_review` to the pull_request
25
+ # trigger, by operator decision. OMN-14777 dropped it because the ready
26
+ # flip force-armed PRs someone meant to hold; since then a PR opened as a
27
+ # draft was never armed by its flip and needed a manual arming step.
28
+ # This repository has no OMN-18179 hold gate; the author gate below and
29
+ # the already-armed guard are what bound arming on the flip.
30
+ # Arming stays limited to the allowed author (the resolve step reads the
31
+ # PR author from the payload, not the sender who flipped it), and the
32
+ # Enable step returns early when the PR is already armed, so a ready flip
33
+ # racing a check_suite or review event cannot arm twice.
24
34
  name: Auto-Merge
25
35
 
26
36
  on:
27
37
  pull_request:
28
- types: [opened]
38
+ types: [opened, ready_for_review]
29
39
  pull_request_review:
30
40
  types: [submitted, dismissed]
31
41
  check_suite:
@@ -41,6 +51,22 @@ permissions:
41
51
  contents: write
42
52
  pull-requests: write
43
53
 
54
+ # OMN-19216: one arming run per PR at a time. A newer event queues behind
55
+ # a running one instead of racing it; the already-armed guard makes the
56
+ # queued run a no-op. Every arming path carries a PR number. The constant
57
+ # fallback covers only a check_suite with no associated PR, which the
58
+ # resolve step skips, and it keeps those in one group rather than giving
59
+ # each run a unique key that would serialize nothing.
60
+ concurrency:
61
+ group: >-
62
+ ${{ github.workflow }}-${{
63
+ github.event.pull_request.number ||
64
+ github.event.inputs.pr_number ||
65
+ github.event.check_suite.pull_requests[0].number ||
66
+ 'no-pr'
67
+ }}
68
+ cancel-in-progress: false
69
+
44
70
  jobs:
45
71
  auto-merge:
46
72
  name: Enable Auto-Merge
@@ -96,6 +122,14 @@ jobs:
96
122
  PR: ${{ steps.resolve.outputs.pr }}
97
123
  run: |
98
124
  set -euo pipefail
125
+ # OMN-19216: a ready flip, a check_suite completion and a review can each
126
+ # reach this step for one PR. An already-armed PR is left alone rather
127
+ # than armed a second time.
128
+ armed="$(gh pr view "$PR" --repo "$GH_REPO" --json autoMergeRequest --jq '.autoMergeRequest != null')"
129
+ if [ "$armed" = "true" ]; then
130
+ echo "PR #${PR} is already armed; not arming again (OMN-19216)."
131
+ exit 0
132
+ fi
99
133
  # OMN-13138/13214: on a queue-controlled branch the merge method is
100
134
  # set by the merge queue, so passing an explicit --squash is
101
135
  # rejected ("The merge strategy for dev is set by the merge queue")
@@ -33,6 +33,10 @@ on:
33
33
  # left byte-unchanged for whatever still calls it. Precedent and shape:
34
34
  # omnibase_core#1703 and omnibase_spi#308, under OMN-18658.
35
35
 
36
+ concurrency:
37
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
38
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
39
+
36
40
  jobs:
37
41
  auto-tag:
38
42
  if: >-
@@ -22,11 +22,16 @@ on:
22
22
  - tests/**
23
23
  merge_group:
24
24
 
25
+ concurrency:
26
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
27
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
28
+
25
29
  jobs:
26
30
  ban-hardcoded-runner-ip:
27
31
  # OMN-17993: pinned to an exact SHA, not @main. omniclaude main lags dev by
28
32
  # design (release-synced), so @main still resolves to the pre-widening scanner
29
33
  # body that scans workflow files only and exits 0 on a tests-only diff.
30
- uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@6f965a67ea2873fd76df955bca54b3a6472d2a91
34
+ uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
31
35
  permissions:
32
36
  contents: read
37
+ pull-requests: read
@@ -100,15 +100,17 @@ jobs:
100
100
  github.actor != 'renovate[bot]' &&
101
101
  (contains(github.event.pull_request.title, 'OMN-') ||
102
102
  contains(github.event.pull_request.head.ref, 'OMN-'))
103
- # OMN-14941 (F1 repin): pinned `@dev` until the reusable promotes to
104
- # omniclaude main (call-occ-autobind-reusable.yml exists only on
105
- # omniclaude dev today); then re-pin to `@main` or a main SHA (OMN-14812).
106
- # tests/ci/test_workflow_uses_refs_resolve.py fails closed on any
107
- # cross-repo `uses:` pin that does not resolve live.
108
- uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-autobind-reusable.yml@dev
103
+ # OMN-20001: the reusable and the omnimarket publisher it sources are both
104
+ # pinned to immutable revs (omniclaude 2a4123cf, omnimarket v0.4.276), never
105
+ # a sibling's live branch, so a merge there cannot turn this repo red.
106
+ # Bump both together in a consumer PR after an integration test of the new
107
+ # revs; tests/unit/test_workflow_sibling_pins.py fails closed on any
108
+ # sibling `uses:` / checkout without a 40-hex rev.
109
+ uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-autobind-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
109
110
  secrets: inherit
110
111
  with:
111
112
  lane: dev
113
+ omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
112
114
 
113
115
  occ-autobind-manual-replay:
114
116
  # OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
@@ -160,7 +162,7 @@ jobs:
160
162
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
161
163
  with:
162
164
  repository: OmniNode-ai/omnimarket
163
- ref: dev
165
+ ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
164
166
  path: .occ-autobind-src
165
167
  persist-credentials: false
166
168
  sparse-checkout: |
@@ -157,7 +157,7 @@ jobs:
157
157
  github.actor != 'renovate[bot]' &&
158
158
  (contains(github.event.pull_request.title, 'OMN-') ||
159
159
  contains(github.event.pull_request.head.ref, 'OMN-'))
160
- uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@dev
160
+ uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
161
161
  # OMN-18012: the dev lane declares SASL_PLAINTEXT/SCRAM-SHA-256, so the
162
162
  # publisher needs the KAFKA_SASL_* credentials. The broker is still
163
163
  # resolved from omnimarket's committed overlay, never from a secret.
@@ -167,6 +167,7 @@ jobs:
167
167
  secrets: inherit # pragma: allowlist secret
168
168
  with:
169
169
  lane: dev
170
+ omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
170
171
 
171
172
  occ-companion-effect-manual-replay:
172
173
  # OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
@@ -226,7 +227,7 @@ jobs:
226
227
  uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
227
228
  with:
228
229
  repository: OmniNode-ai/omnimarket
229
- ref: dev
230
+ ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
230
231
  path: .occ-companion-effect-src
231
232
  persist-credentials: false
232
233
  sparse-checkout: |
@@ -18,11 +18,15 @@ on:
18
18
  branches: [main, dev]
19
19
  merge_group:
20
20
 
21
+ concurrency:
22
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
23
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
24
+
21
25
  permissions:
22
26
  contents: read
23
27
  pull-requests: read
24
28
 
25
29
  jobs:
26
30
  call-reject-skip-token:
27
- uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@main
31
+ uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
28
32
  secrets: inherit
@@ -10,6 +10,10 @@ on:
10
10
  merge_group:
11
11
  workflow_dispatch:
12
12
 
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
15
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
16
+
13
17
  jobs:
14
18
  check-handshake:
15
19
  name: Check architecture handshake
@@ -24,9 +28,8 @@ jobs:
24
28
  uses: actions/checkout@v7
25
29
  with:
26
30
  repository: OmniNode-ai/omnibase_core
27
- # Pinned to omnibase_core main as of 2026-03-22.
28
- # Update by running: gh api repos/OmniNode-ai/omnibase_core/commits/main --jq '.sha'
29
- ref: 330a344cdb9c5dedd04a46dfbb0b63dae0baccfb
31
+ # Auto-bumped by omnibase_core publish-downstream-pin-bump.yml to 2f90bd814b14.
32
+ ref: 2f90bd814b140ed8f8dad74cc499b0976807e47d
30
33
  path: omnibase_core
31
34
 
32
35
  - name: Verify omnibase_core checkout
@@ -8,6 +8,8 @@ on:
8
8
  branches: [main, 'hotfix/**']
9
9
  pull_request:
10
10
  branches: [main, dev]
11
+ # OMN-18854: marking a draft ready must re-evaluate evidence admission.
12
+ types: [opened, synchronize, reopened, ready_for_review]
11
13
  merge_group:
12
14
  workflow_dispatch:
13
15
 
@@ -21,6 +23,37 @@ env:
21
23
  CACHE_VERSION: "0.1.0"
22
24
 
23
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
+
24
57
  # =============================================================================
25
58
  # JOB ORDERING RATIONALE (Fail-Fast Optimization)
26
59
  # =============================================================================
@@ -150,7 +183,7 @@ jobs:
150
183
  onex-validation:
151
184
  name: ONEX Validation
152
185
  runs-on: ubuntu-latest
153
- timeout-minutes: 5
186
+ timeout-minutes: 30
154
187
 
155
188
  steps:
156
189
  - name: Checkout code
@@ -162,6 +195,9 @@ jobs:
162
195
  - name: Install dependencies
163
196
  run: uv sync --locked --reinstall-package omnibase-core --reinstall-package omnibase-spi --reinstall-package omnibase-infra
164
197
 
198
+ - name: Run the whole-tree pre-commit suite
199
+ run: uv run pre-commit run --all-files --show-diff-on-failure
200
+
165
201
  # SYNC: Pre-commit hook 'validate-pydantic-patterns' at pre-commit stage
166
202
  - name: Validate Pydantic patterns
167
203
  run: uv run python scripts/validation/validate_pydantic_patterns.py src/
@@ -202,6 +238,37 @@ jobs:
202
238
  - name: Validate no silent env fallbacks
203
239
  run: uv run python scripts/validation/validate_no_env_fallbacks.py
204
240
 
241
+ # SYNC: Pre-commit hook 'validate-model-locations' at pre-commit stage
242
+ - name: Validate model locations
243
+ run: uv run python scripts/validation/validate_model_locations.py src/
244
+
245
+ # SYNC: Pre-commit hook 'no-hardcoded-bolt-fallback' at pre-commit stage
246
+ - name: Validate no hardcoded bolt fallback (whole-tree backstop)
247
+ run: bash scripts/check_no_hardcoded_bolt.sh
248
+
249
+ # SYNC: Pre-commit hook 'kafka-no-hardcoded-fallback' at pre-commit stage
250
+ - name: Validate no hardcoded Kafka fallback (whole-tree backstop)
251
+ run: bash scripts/validation/check_kafka_no_hardcoded_fallback.sh
252
+
253
+ # SYNC: Pre-commit hook 'no-internal-ips' at pre-commit stage
254
+ - name: Validate no internal IPs (whole-tree backstop)
255
+ run: bash scripts/validation/check_no_internal_ips.sh
256
+
257
+ # CI counterpart of the no-git-precommit-additional-dependencies hook.
258
+ - name: Pre-commit dependencies come from package indexes (OMN-19666)
259
+ run: bash tests/test_precommit_additional_dependencies_omn19666.sh
260
+
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
+ # SYNC: Pre-commit hook 'validate-gitignore-baseline' at pre-commit stage (OMN-18033)
266
+ # This step and the hook both pin released omnibase-core==0.47.23,
267
+ # matching uv.lock and carrying the packaged baseline spec; move them together.
268
+ # OMN-19666: do not use git+ URLs for this validator.
269
+ - name: Validate gitignore baseline (OMN-18033)
270
+ run: uv run --isolated --no-project --with "omnibase-core==0.47.23" python -m omnibase_core.validators.gitignore_baseline .
271
+
205
272
  - name: ONEX validation summary
206
273
  if: always()
207
274
  run: |
@@ -218,6 +285,9 @@ jobs:
218
285
  echo "- Kafka import boundary enforcement (ARCH-002)" >> $GITHUB_STEP_SUMMARY
219
286
  echo "- Pydantic model location enforcement" >> $GITHUB_STEP_SUMMARY
220
287
  echo "- No silent env fallbacks (OMN-10735)" >> $GITHUB_STEP_SUMMARY
288
+ echo "- No hardcoded bolt fallback" >> $GITHUB_STEP_SUMMARY
289
+ echo "- No hardcoded Kafka fallback" >> $GITHUB_STEP_SUMMARY
290
+ echo "- No hardcoded internal IPs" >> $GITHUB_STEP_SUMMARY
221
291
 
222
292
  # Phase 1 - Transport Import Guard (ARCH-002)
223
293
  # SYNC: Pre-commit hook 'validate-no-transport-imports' (omnibase_core remote hook)
@@ -309,10 +379,21 @@ jobs:
309
379
  # Uses default GITHUB_TOKEN which has read access to public repos in the org.
310
380
  # Same pattern as omniclaude ci-cd.yml. If omnibase_core becomes private,
311
381
  # add: token: ${{ secrets.OMNIBASE_CORE_ACCESS_TOKEN }}
382
+ # OMN-20001: read the omnibase_core rev this repo has PINNED (the one the
383
+ # omnibase_core downstream pin-bump bot maintains in check-handshake.yml),
384
+ # never core's live default branch.
385
+ - name: Resolve pinned omnibase_core rev
386
+ id: core-pin
387
+ run: |
388
+ rev="$(grep -E '^[[:space:]]+ref: [0-9a-f]{40}$' .github/workflows/check-handshake.yml | awk '{print $2}')"
389
+ [[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no single pinned omnibase_core rev in check-handshake.yml"; exit 1; }
390
+ echo "rev=$rev" >> "$GITHUB_OUTPUT"
391
+
312
392
  - name: Checkout omnibase_core
313
393
  uses: actions/checkout@v7
314
394
  with:
315
395
  repository: OmniNode-ai/omnibase_core
396
+ ref: ${{ steps.core-pin.outputs.rev }}
316
397
  path: omnibase_core
317
398
 
318
399
  - name: Verify handshake is current
@@ -571,10 +652,20 @@ jobs:
571
652
  if: github.event_name == 'pull_request' || github.event_name == 'merge_group' || github.event_name == 'push'
572
653
  steps:
573
654
  - 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
+
574
664
  - name: Checkout onex_change_control
575
665
  uses: actions/checkout@v7
576
666
  with:
577
667
  repository: OmniNode-ai/onex_change_control
668
+ ref: ${{ steps.occ-pin.outputs.rev }}
578
669
  path: onex_change_control
579
670
 
580
671
  - uses: astral-sh/setup-uv@v7
@@ -618,21 +709,198 @@ jobs:
618
709
  - name: Ratchet non-canonical lifecycle-word classes against frozen allowlist (OMN-14350)
619
710
  run: |
620
711
  uv run --no-project \
621
- --with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@63635097705d832e0ee9c4811093efb31349105c' \
712
+ --with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5' \
622
713
  python -m omnibase_core.validators.no_noncanonical_lifecycle_classes \
623
714
  --check-stale \
624
715
  --allowlist .onex_ratchets/noncanonical_class_allowlist.yaml \
625
716
  src/omnimemory
626
717
 
718
+ shape-gate-independence:
719
+ name: Shape-Gate Independence (OMN-20298)
720
+ # OMN-20298: no shape-gate detector may depend on the change-control preflight.
721
+ # Unconditional (no needs, no if); wired into required CI Summary via needs: +
722
+ # strict success-only verdict check.
723
+ runs-on: ubuntu-latest
724
+ timeout-minutes: 10
725
+ steps:
726
+ - name: Checkout code
727
+ uses: actions/checkout@v7
728
+ - name: Set up Python
729
+ uses: actions/setup-python@v7
730
+ with:
731
+ python-version: "3.12"
732
+ - name: Install uv
733
+ uses: astral-sh/setup-uv@v7
734
+ with:
735
+ version: "0.8.3"
736
+ - name: Refuse shape-gate detectors that depend on the preflight (OMN-20298)
737
+ run: |
738
+ uv run --no-project \
739
+ --with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@7f20b97895f01996c5858dde385ba8991c06e708' \
740
+ python -m omnibase_core.handlers.handler_shape_gate_independence
741
+
742
+ # ============================================================================
743
+ # Detect Secrets - the CI half of the .secrets.baseline gate (OMN-18669)
744
+ # ============================================================================
745
+ # This repository carried a committed `.secrets.baseline` that NO hook and NO
746
+ # workflow read. Measured 2026-09-18 (integration probe R9): the file was
747
+ # present, the repository looked protected, and a full scan against it
748
+ # surfaced 47 findings in 18 files nothing had ever been asked to approve.
749
+ # Nobody had loosened a gate -- there was no gate.
750
+ #
751
+ # Uses detect-secrets-hook, which compares findings to the baseline on the
752
+ # full equality model (hashed_secret + type) and exits non-zero only for
753
+ # findings NOT already baselined. Same pin, same baseline and the same
754
+ # exclusions as the `detect-secrets` pre-commit hook in
755
+ # .pre-commit-config.yaml -- if the two selections differ, a commit passes
756
+ # locally and this check fails, or worse, the reverse.
757
+ #
758
+ # Wired into the required `CI Summary` context through needs: below, with a
759
+ # strict success-only verdict, so it gates merges rather than advising.
760
+ detect-secrets:
761
+ name: Detect Secrets
762
+ runs-on: ubuntu-latest
763
+ timeout-minutes: 5
764
+
765
+ steps:
766
+ - name: Checkout code
767
+ uses: actions/checkout@v7
768
+
769
+ - name: Set up Python
770
+ uses: actions/setup-python@v7
771
+ with:
772
+ python-version: "3.12"
773
+
774
+ # detect-secrets is a CI-only scanning tool, not a project dependency.
775
+ # Installed via pip (not uv) because it is not declared in pyproject.toml.
776
+ - name: Install detect-secrets
777
+ run: pip install detect-secrets==1.5.0
778
+
779
+ - name: Run detect-secrets-hook
780
+ run: |
781
+ # -n/--no-verify (OMN-15063): several plugins (SlackDetector,
782
+ # StripeDetector, ...) call the live vendor API to "verify" each
783
+ # regex-matched candidate, then silently drop anything that comes
784
+ # back VERIFIED_FALSE. A negative or uncertain live-verification
785
+ # result must not silently remove a finding (fail-closed). Never
786
+ # remove this flag without re-proving the miss is fixed another way.
787
+ set +e
788
+ git ls-files -z | xargs -0 detect-secrets-hook \
789
+ --no-verify \
790
+ --baseline .secrets.baseline \
791
+ --exclude-files 'uv\.lock' \
792
+ --exclude-files 'hardcoded_model_config_baseline\.yaml' \
793
+ --exclude-files '\.venv/' \
794
+ --exclude-files 'tests/fixtures/' \
795
+ --exclude-files '\.git/' \
796
+ --exclude-files '\.secrets\.baseline' \
797
+ --exclude-files '\.github/workflows/.*\.ya?ml' # workflow YAML legitimately references the secrets context
798
+ HOOK_EXIT=$?
799
+ set -e
800
+
801
+ if [[ $HOOK_EXIT -eq 0 ]]; then
802
+ echo "## Secrets Scan" >> $GITHUB_STEP_SUMMARY
803
+ echo "No new secrets detected (all findings are baselined)." >> $GITHUB_STEP_SUMMARY
804
+ else
805
+ echo "## New Secrets Detected" >> $GITHUB_STEP_SUMMARY
806
+ echo "" >> $GITHUB_STEP_SUMMARY
807
+ echo "Findings are present that .secrets.baseline does not carry." >> $GITHUB_STEP_SUMMARY
808
+ echo "" >> $GITHUB_STEP_SUMMARY
809
+ echo "If they are real, remove them and rotate under the credential-rotation" >> $GITHUB_STEP_SUMMARY
810
+ echo "runbook. If they are false positives, audit them into the baseline:" >> $GITHUB_STEP_SUMMARY
811
+ echo '```' >> $GITHUB_STEP_SUMMARY
812
+ echo 'detect-secrets scan --no-verify --exclude-files "uv\.lock" --exclude-files "\.venv/" --exclude-files "tests/fixtures/" --exclude-files "\.git/" --exclude-files "\.secrets\.baseline" --exclude-files "\.github/workflows/.*\.ya?ml" --force-use-all-plugins > .secrets.baseline' >> $GITHUB_STEP_SUMMARY
813
+ echo 'detect-secrets audit .secrets.baseline' >> $GITHUB_STEP_SUMMARY
814
+ echo '```' >> $GITHUB_STEP_SUMMARY
815
+ echo "" >> $GITHUB_STEP_SUMMARY
816
+ echo "Never loosen the hook or widen the exclusions to clear this." >> $GITHUB_STEP_SUMMARY
817
+ exit $HOOK_EXIT
818
+ fi
819
+
820
+ # Canonical-file-shape ratchet (OMN-20304). Operator ruling 2026-10-01: no
821
+ # new scripts, plugins or exceptions in any repository. Refuses a new code
822
+ # file outside src/<pkg>/{nodes,handlers,models,protocols,contracts,enums}/,
823
+ # tests/ and docs/, new imperative lines in a SKILL.md, and any new baseline,
824
+ # allowlist, waiver or suppression entry. Existing files sit in the
825
+ # shrink-only .onex_ratchets/canonical_file_shape_baseline.txt. Same module
826
+ # and same omnibase_core commit as the canonical-file-shape pre-commit hook.
827
+ # Unconditional: no `if:`, no `needs:`. The positive-control step plants a
828
+ # bad sample on every run and fails unless the ratchet refuses it.
829
+ canonical-file-shape:
830
+ name: Canonical File Shape (OMN-20304)
831
+ runs-on: ubuntu-latest
832
+ timeout-minutes: 15
833
+ env:
834
+ CANONICAL_FILE_SHAPE_CORE: "omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5"
835
+ steps:
836
+ - name: Checkout code
837
+ uses: actions/checkout@v7
838
+ with:
839
+ fetch-depth: 0
840
+ - name: Set up Python
841
+ uses: actions/setup-python@v7
842
+ with:
843
+ python-version: "3.12"
844
+ - name: Install uv
845
+ uses: astral-sh/setup-uv@v7
846
+ with:
847
+ version: "0.8.3"
848
+ - name: Positive control (planted bad sample refused, clean sample accepted)
849
+ run: |
850
+ set -u
851
+ ratchet() {
852
+ uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
853
+ python -m omnibase_core.validators.canonical_file_shape "$@"
854
+ }
855
+ mkdir -p bin tests
856
+ printf '#!/bin/sh\necho planted\n' > bin/zz_canary_planted
857
+ git add bin/zz_canary_planted
858
+ if ratchet; then
859
+ echo "POSITIVE CONTROL FAILED: planted bin/zz_canary_planted was accepted"
860
+ exit 1
861
+ fi
862
+ echo "positive control: planted bad sample refused"
863
+ git rm -q --cached bin/zz_canary_planted
864
+ rm bin/zz_canary_planted
865
+ printf 'def test_canary() -> None:\n assert True\n' > tests/zz_canary_clean.py
866
+ git add tests/zz_canary_clean.py
867
+ ratchet
868
+ echo "positive control: clean sample accepted"
869
+ git rm -q --cached tests/zz_canary_clean.py
870
+ rm tests/zz_canary_clean.py
871
+ - name: Refuse new non-canonical files and new exceptions
872
+ env:
873
+ PR_BASE: ${{ github.event.pull_request.base.sha }}
874
+ MQ_BASE: ${{ github.event.merge_group.base_sha }}
875
+ PUSH_BEFORE: ${{ github.event.before }}
876
+ run: |
877
+ set -u
878
+ base="${PR_BASE:-${MQ_BASE:-${PUSH_BEFORE:-}}}"
879
+ if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
880
+ base="$(git merge-base "$base" HEAD)"
881
+ uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
882
+ python -m omnibase_core.validators.canonical_file_shape --base "$base" --head HEAD
883
+ else
884
+ echo "no base revision on this event; checking the tree against the baseline only"
885
+ uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
886
+ python -m omnibase_core.validators.canonical_file_shape --head HEAD
887
+ fi
888
+
627
889
  ci-summary:
628
890
  name: CI Summary
629
891
  runs-on: ubuntu-latest
630
- 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]
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]
631
893
  if: always()
632
894
 
633
895
  steps:
634
896
  - name: Check test results
635
897
  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
636
904
  # OMN-14350: strict fail-closed gate on the non-canonical lifecycle-class
637
905
  # ratchet - only 'success' passes; skipped/cancelled/failure ALL block. It is
638
906
  # in needs: so this job WAITS for it (no race).
@@ -640,6 +908,25 @@ jobs:
640
908
  echo "::error::no-noncanonical-lifecycle-classes ratchet did not pass (result: ${{ needs.no-noncanonical-lifecycle-classes.result }}) - fail-closed (OMN-14350)"
641
909
  exit 1
642
910
  fi
911
+ # OMN-20298: strict fail-closed gate on shape-gate independence - only
912
+ # 'success' passes; skipped/cancelled/failure ALL block.
913
+ if [[ "${{ needs.shape-gate-independence.result }}" != "success" ]]; then
914
+ echo "::error::shape-gate-independence did not pass (result: ${{ needs.shape-gate-independence.result }}) - fail-closed (OMN-20298)"
915
+ exit 1
916
+ fi
917
+ # OMN-18669: strict fail-closed gate on the secrets scan - only 'success'
918
+ # passes; skipped/cancelled/failure ALL block. A secrets gate that a
919
+ # skipped job can satisfy is the state this ticket exists to remove.
920
+ if [[ "${{ needs.detect-secrets.result }}" != "success" ]]; then
921
+ echo "::error::detect-secrets did not pass (result: ${{ needs.detect-secrets.result }}) - fail-closed (OMN-18669)"
922
+ exit 1
923
+ fi
924
+ # OMN-20304: strict fail-closed gate on the canonical-file-shape ratchet -
925
+ # only 'success' passes; skipped/cancelled/failure ALL block.
926
+ if [[ "${{ needs.canonical-file-shape.result }}" != "success" ]]; then
927
+ echo "::error::canonical-file-shape ratchet did not pass (result: ${{ needs.canonical-file-shape.result }}) - fail-closed (OMN-20304)"
928
+ exit 1
929
+ fi
643
930
  migration_freeze="${{ needs.migration-freeze.result }}"
644
931
  lint="${{ needs.lint.result }}"
645
932
  pyright="${{ needs.pyright.result }}"
@@ -95,7 +95,7 @@ jobs:
95
95
  - name: Run contract validation
96
96
  id: validate-contract
97
97
  if: steps.resolve-branch.outputs.skip_validation != 'true'
98
- uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@main
98
+ uses: OmniNode-ai/onex_change_control/.github/actions/validate-contract@725d2967b031d7065efd41d0751f903638202cc1
99
99
  with:
100
100
  branch-name: ${{ steps.resolve-branch.outputs.resolved_branch }}
101
101
  contracts-path: contracts
@@ -36,6 +36,10 @@ on:
36
36
  branches: [main, dev]
37
37
  merge_group:
38
38
 
39
+ concurrency:
40
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
41
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
42
+
39
43
  permissions:
40
44
  contents: read
41
45