omninode-memory 0.18.5__tar.gz → 0.18.7__tar.gz

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