omninode-memory 0.18.3__tar.gz → 0.18.5__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.
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/required-checks.yaml +46 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/ban-hardcoded-runner-ip.yml +2 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/call-occ-autobind.yml +9 -7
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/call-occ-companion-effect.yml +3 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/call-reject-skip.yml +1 -1
- omninode_memory-0.18.5/.github/workflows/call-repo-evidence-gate.yml +70 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/check-handshake.yml +2 -3
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/ci.yml +185 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/contract-validation.yml +85 -20
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/docs-validate.yml +1 -1
- omninode_memory-0.18.5/.github/workflows/hardcoded-model-config.yml +24 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/imperative-contract-guard.yml +3 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/kb-doc-gate.yml +1 -1
- omninode_memory-0.18.5/.github/workflows/pr-title-check.yml +62 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/public-repo-hygiene.yml +2 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/secrets-baseline-wiring.yml +1 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/security-scan.yml +2 -2
- omninode_memory-0.18.5/.onex_ratchets/canonical_file_shape_baseline.txt +75 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.pre-commit-config.yaml +59 -7
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.pre-commit-hooks/reject-deploy-gate-skip-token.sh +18 -35
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.public-repo-hygiene.yaml +1 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.secrets.baseline +2 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/CHANGELOG.md +20 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/CLAUDE.md +2 -2
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/PKG-INFO +16 -16
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/README.md +13 -13
- omninode_memory-0.18.5/config/hardcoded_model_config_baseline.yaml +47 -0
- omninode_memory-0.18.5/contracts/OMN-20032.yaml +57 -0
- omninode_memory-0.18.5/contracts/OMN-20074.yaml +168 -0
- omninode_memory-0.18.5/contracts/OMN-20936.yaml +55 -0
- omninode_memory-0.18.5/contracts/OMN-20940.yaml +58 -0
- omninode_memory-0.18.5/contracts/OMN-20943.yaml +67 -0
- omninode_memory-0.18.5/contracts/OMN-20997.yaml +69 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations_pending/004_create_navigation_paths_collection.py +1 -1
- omninode_memory-0.18.5/imperative-contract-allowlist.yaml +22 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/pyproject.toml +4 -4
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/test_selection_adjacency.yaml +8 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validate_ci_precommit_alignment.py +20 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_graph_memory.py +1 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/events/__init__.py +3 -0
- omninode_memory-0.18.5/src/omnimemory/models/events/model_lifecycle_transition_failed_event.py +60 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/contract.yaml +0 -9
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/contract.yaml +5 -31
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/contract.yaml +3 -23
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/contract.yaml +3 -12
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/contract.yaml +1 -4
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/contract.yaml +3 -10
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/contract.yaml +3 -12
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/contract.yaml +3 -12
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/dispatch_handlers.py +256 -13
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/plugin.py +151 -5
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/wiring.py +24 -29
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/topics.py +6 -0
- omninode_memory-0.18.5/tests/ci/test_codeql_from_core_omn20074.py +78 -0
- omninode_memory-0.18.5/tests/ci/test_contract_validation_core_validator_omn20074.py +246 -0
- omninode_memory-0.18.5/tests/ci/test_deployment_config_context_omn20940.py +81 -0
- omninode_memory-0.18.5/tests/ci/test_imperative_contract_guard_caller_omn20943.py +194 -0
- omninode_memory-0.18.5/tests/ci/test_pr_title_check_omnimarket_node.py +206 -0
- omninode_memory-0.18.5/tests/ci/test_precommit_hooks_core_omn20074.py +100 -0
- omninode_memory-0.18.5/tests/ci/test_reject_skip_token_hook_omn20074.py +71 -0
- omninode_memory-0.18.5/tests/ci/test_repo_evidence_caller_omn20074.py +120 -0
- omninode_memory-0.18.5/tests/ci/test_repo_evidence_caller_verifier_floor_omn20032.py +63 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_golden_chain_qdrant_ingestion.py +10 -1
- omninode_memory-0.18.5/tests/scripts/test_occ_eligibility_enforcement.py +165 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_contract_validation.py +58 -53
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_handler_routing_boot_resolvable.py +1 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_dispatch_handlers.py +3 -3
- omninode_memory-0.18.5/tests/unit/runtime/test_expire_memory_dispatch.py +374 -0
- omninode_memory-0.18.5/tests/unit/runtime/test_navigation_embedding_url_omn20936.py +90 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_plugin_integration_wiring.py +145 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_wiring.py +41 -1
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_validate_ci_precommit_alignment.py +18 -3
- omninode_memory-0.18.5/tests/unit/test_workflow_sibling_pins.py +94 -0
- omninode_memory-0.18.5/tests/workflows/__init__.py +2 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/uv.lock +12 -12
- omninode_memory-0.18.3/.github/workflows/pr-title-check.yml +0 -34
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.claude/architecture-handshake.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.env.example +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.flake8 +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/CODE_OF_CONDUCT.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/CONTRIBUTING.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/dependabot.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/auto-merge.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/auto-tag-on-merge.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/build-and-push-migrate-image.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/dep-provenance-gate.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/main-target-guard.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/omni-standards-compliance.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/pin-resolvability-gate.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/pre-commit.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/release-dry-run.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/release.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/sibling-lock-refresh.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/stale-todo-gate.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/todo-audit-on-merge.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/url-authority-gate.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/validate-validator-requirements.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/validator-runtime-profiles.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.gitignore +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.kb-doc-gate.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.markdown-link-check.json +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.onex_ratchets/noncanonical_class_allowlist.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.serena/project.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/.yamlfmt +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/LICENSE +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/SECURITY.md +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/architecture-handshakes/validator-requirements-baseline.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/architecture-handshakes/validator-requirements.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/contracts/OMN-12245.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations/001_create_subscription_tables.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations/002_create_memories_table.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations/005_backfill_null_checksums.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/migrations_pending/004_create_navigation_sessions_table.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/database/pending/003_create_crawl_state_table.sql +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/deployment/docker/Dockerfile.migrate +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docker-compose.prod.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docker-compose.yml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-icon-black.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-icon-full-color.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-icon-white.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-inline-black.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-inline-full-color.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-inline-white.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-stacked-black.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-stacked-full-color.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-stacked-white.png +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-wordmark-black.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-wordmark-grey.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/docs/assets/brand/omninode-wordmark-white.svg +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/examples/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/examples/advanced_architecture_demo.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/pyrightconfig.json +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/check_dep_provenance.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/check_migration_freeze.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/check_no_hardcoded_bolt.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/collect_changed_files.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/detect_test_paths.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/run_runtime_profiles_validator.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/test_selection_loader.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/test_selection_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/ci/verify_pypi_pin_resolvability.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/check_ai_slop.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/check_kafka_no_hardcoded_fallback.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/check_no_internal_ips.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/check_precommit_additional_dependencies.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/foundation_validation_common.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_enum_casing.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_http_imports.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_model_locations.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_naming.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_no_backward_compatibility.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_no_env_fallbacks.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_pydantic_patterns.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_secrets.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_single_class_per_file.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/scripts/validation/validate_spdx_headers.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/_compat_imports.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_concurrency.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_correlation_context.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_db_url.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_error_sanitizer.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_handler_constants.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_health_manager.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_metrics_counter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_observability_wrapper.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_resource_manager.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/adapters/adapter_retry_utils.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/bootstrap.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/crawl/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/crawl/enum_context_source_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/crawl/enum_crawler_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/crawl/enum_detected_doc_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_attribution_signal_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_context_item_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_data_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_entity_extraction_mode.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_error_code.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_intelligence_operation_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_lifecycle_state.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_memory_operation_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_memory_storage_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_memory_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_migration_status.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_node_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_operation_status.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_preferred_tone.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_priority_level.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_promotion_tier.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_semantic_entity_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_severity.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_subscription_status.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_technical_level.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/enums/enum_trust_level.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/errors/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/errors/embedding_errors.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_intent_graph_contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/adapter_valkey.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/models/model_adapter_intent_graph_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/models/model_intent_domain.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/adapters/models/model_intent_graph_health.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/handler_intent.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/handler_subscription.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/handler_subscription_contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/handlers/models/model_handler_intent_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_connections_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_filesystem_adapter_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_graph_memory_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_graph_memory_health.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_memory_connection.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_related_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/adapters/model_related_memory_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_doc_source_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_embedding_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_filesystem_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_handler_semantic_compute_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_linear_scope_mapping.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_memory_service_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_path_scope_mapping.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_postgres_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_promotion_threshold_set.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_qdrant_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_rate_limiter_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/config/model_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/container/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/mixin_handler_routing.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/model_contract_compute_extended.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/model_contract_effect_extended.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/model_contract_orchestrator_extended.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/contracts/model_contract_reducer_extended.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_memory_context.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_memory_metadata.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_memory_parameters.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_memory_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_memory_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_operation_metadata.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_processing_metrics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/core/model_provenance.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_changed_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_discovered_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_indexed_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_indexed_kreuzberg_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_parse_failed_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/model_document_removed_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/crawl/types.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/events/model_crawl_tick_command.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/events/model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_audit_metadata.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_configuration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_connection_metadata.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_error_details.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_health_metadata.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_health_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_memory_data.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_metrics_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_migration_progress.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_notes.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_priority.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_progress_summary.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_semver.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_success_metrics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_system_health.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_tags.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_trust_score.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_typed_collections.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/foundation/model_user.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/model_intelligence_analysis.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/model_pattern_recognition_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/model_semantic_analysis_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/model_semantic_entity.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/intelligence/model_semantic_entity_list.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/model_memory_item.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/model_memory_query.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/model_memory_search_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/model_memory_storage_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/memory/model_similarity_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/persona/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/persona/model_persona_signal.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/persona/model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/scoring/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/scoring/model_context_item_stats.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/scoring/model_context_policy_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/scoring/model_promotion_decision.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/service/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/service/model_service_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/service/model_service_health.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/service/model_service_registry.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/subscription/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/subscription/constants.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/subscription/model_notification_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/subscription/model_notification_event_payload.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/subscription/model_subscription.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_audit.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_circuit_breaker_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_circuit_breaker_stats_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_concurrency.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_correlation_context.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_health_check_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_health_check_details.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_health_check_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_health_status.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_pii_detection_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_pii_detector_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_pii_match.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_pii_pattern_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_pii_type.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_resource_health_check.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_retry_attempt_info.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_retry_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_retry_statistics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_structured_log_entry.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/models/utils/model_system_health.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/base.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_coordinator_orchestrator/models/model_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/handlers/handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_agent_learning_retrieval_effect/models/model_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/handlers/handler_intent_query.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/mappers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/mappers/util_intent_mapping.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/models/model_handler_intent_query_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/registry/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_query_effect/registry/registry_intent_query_effect.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/adapters/adapter_intent_storage.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_intent_storage_effect/models/model_intent_storage_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/adapters/adapter_kreuzberg_client.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_kreuzberg_parse_effect/models/model_kreuzberg_parse_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_consolidator_reducer/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/adapters/adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_archive.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_expire.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/handlers/handler_memory_tick.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_lifecycle_orchestrator/validators/validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/adapters/adapter_embedding_client.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/contract_descriptor.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_db_mock.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_decay.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_fusion.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_graph_mock.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_memory_retrieval.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/handlers/handler_qdrant_mock.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_embedding_client_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_db_mock_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_graph_mock_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_memory_retrieval_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_handler_qdrant_mock_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_retrieval_effect/models/model_memory_retrieval_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/adapters/adapter_filesystem.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_memory_storage_effect/models/model_memory_storage_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/handlers/handler_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_history_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/models/model_navigation_session.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_navigation_history_reducer/node_navigation_history_reducer.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/handlers/handler_persona_classify.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_builder_compute/models/model_classify_result.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/adapters/adapter_postgres_persona.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_persona_storage_effect/models/model_persona_storage_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/handlers/handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/models/model_semantic_analyzer_compute_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_semantic_analyzer_compute/node_semantic_analyzer_compute.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/handlers/handler_similarity_compute.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/models/model_handler_similarity_compute_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_request.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/models/model_similarity_compute_response.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/nodes/node_similarity_compute/node_similarity_compute.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/base_protocols.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/data_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/error_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/protocol_embedding.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/protocol_embedding_provider.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/protocol_handler_intent.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/protocol_intent_graph_adapter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/protocols/protocol_secrets_provider.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/adapters.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/contract_topics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/handler_lifecycle.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/handler_lifecycle_contract.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/introspection.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/runtime/message_type_registration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/secrets.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/settings.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/tools/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/tools/contract_linter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/tools/validators/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/src/omnimemory/tools/validators/validator_contract.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/__init__.py +0 -0
- {omninode_memory-0.18.3/tests/nodes/node_navigation_history_reducer → omninode_memory-0.18.5/tests/ci}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/conftest.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/fixtures/omn19666/pre-commit-git-dependency.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/fixtures/omn19666/pre-commit-pypi-dependency.yaml +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/gates/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/gates/test_ban_hardcoded_runner_ip_scope.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/gates/test_consumer_group_name_authorization.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_embedding_http.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_embedding_http_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_graph_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_graph_memory_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_intent_graph.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/adapters/test_adapter_rate_limiter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/test_handler_intent.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/handlers/test_handler_semantic_compute.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/conftest.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/nodes/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/nodes/test_kreuzberg_parse_effect.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/nodes/test_memory_lifecycle_orchestrator_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/nodes/test_navigation_history_reducer_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_entry_point_discovery.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_golden_chain_memgraph_ingestion.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_handler_lifecycle_pattern.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_handler_subscription.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_node_agent_coordinator.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/integration/test_persona_round_trip.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/contracts/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/contracts/test_extended_contracts.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/events/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/events/test_model_intent_classified_event.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/models/test_frozen_boundary_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_intent_query_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_intent_query_effect/conftest.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_intent_query_effect/test_handler_intent_query_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_intent_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_intent_storage_effect/test_handler_intent_storage_adapter_integration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_retrieval_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_retrieval_effect/test_contract_descriptor.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_retrieval_effect/test_dispatch_entrypoint_contract.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_retrieval_effect/test_memory_retrieval_effect.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_storage_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_memory_storage_effect/test_memory_storage_effect.py +0 -0
- {omninode_memory-0.18.3/tests/scripts → omninode_memory-0.18.5/tests/nodes/node_navigation_history_reducer}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_navigation_history_reducer/test_navigation_history_reducer_unit.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_similarity_compute/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/nodes/node_similarity_compute/test_similarity_compute.py +0 -0
- {omninode_memory-0.18.3/tests/unit/adapters → omninode_memory-0.18.5/tests/scripts}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/scripts/test_check_dep_provenance.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/scripts/test_pin_resolvability_conflict_report.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/scripts/test_pin_resolvability_gate_workflow.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_bootstrap.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_concurrency.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_config_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_contract_version.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_db_url.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_foundation.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_health_manager.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_migration_progress.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_node_enforcement.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_node_imports.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_observability_manager.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_observability_metrics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_performance.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_precommit_additional_dependencies_omn19666.sh +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_precommit_staged_scope_omn19612.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_resource_manager.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_secrets_provider.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_semantic_compute_policy_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_settings.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/test_validation_scripts.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/__init__.py +0 -0
- {omninode_memory-0.18.3/tests/unit/handlers → omninode_memory-0.18.5/tests/unit/adapters}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/adapters/test_adapter_pii_detector.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/adapters/test_pii_live_call_paths.py +0 -0
- {omninode_memory-0.18.3/tests/unit/handlers/adapters → omninode_memory-0.18.5/tests/unit/handlers}/__init__.py +0 -0
- {omninode_memory-0.18.3/tests/unit/nodes → omninode_memory-0.18.5/tests/unit/handlers/adapters}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/handlers/adapters/test_graph_adapter_typing.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/handlers/test_subscription_typing.py +0 -0
- {omninode_memory-0.18.3/tests/unit/runtime → omninode_memory-0.18.5/tests/unit/nodes}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/fixtures/omn16765/hybrid_retrieval_corpus.json +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_activation_decay.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_decay_ranking.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_handler_agent_learning_retrieval.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_handler_qdrant.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_hybrid_retrieval_fusion.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_kreuzberg_parse_effect/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_kreuzberg_parse_effect/test_handler_kreuzberg_parse.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_postgres_deactivate_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_adapter_runtime_tick_memory.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_archive.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_expire.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_handler_memory_tick.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_memory_lifecycle_orchestrator/test_validator_lifecycle_transition.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_model_handler_qdrant_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_navigation_history_reducer_contract.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_node_agent_learning_retrieval_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_persona_builder.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/nodes/test_persona_storage_retrieval.py +0 -0
- {omninode_memory-0.18.3/tests/unit/scripts → omninode_memory-0.18.5/tests/unit/runtime}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/conftest.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_adapters.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_contract_handler_completeness.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_contract_topics.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_introspection.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_memory_subscription_group_is_authorized.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_message_type_registration.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_plugin.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_plugin_graph_memory_wiring.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_plugin_memory_validate_handshake.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/runtime/test_standalone_handler_contracts.py +0 -0
- {omninode_memory-0.18.3/tests/workflows → omninode_memory-0.18.5/tests/unit/scripts}/__init__.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/scripts/test_check_ai_slop.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/scripts/test_collect_changed_files.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/scripts/test_occ_manual_replay_precheck.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_auto_tag_app_token_push_omn18662.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_ci_workflow_shape.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_contract_linter.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_detect_test_paths.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_dispatch_retrieval_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_entry_points.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_graphify_to_memgraph.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_graphify_to_qdrant.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_handler_subscription_notify_strict.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_ingestion_models.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_model_user_persona_v1.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_no_duplicate_node_uuids.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_occ_companion_effect_edited_trigger_omn_18334.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_persona_enums.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_scope_mapping_config.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_sql_placeholders.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/unit/test_validate_kafka_imports.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/workflows/test_auto_merge_ready_for_review_omn19216.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/tests/workflows/test_auto_merge_workflow.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/validate_architecture_improvements.py +0 -0
- {omninode_memory-0.18.3 → omninode_memory-0.18.5}/validation/runtime_profiles_allowlist.yaml +0 -0
|
@@ -14,9 +14,32 @@
|
|
|
14
14
|
#
|
|
15
15
|
# Applied via: gh api repos/OmniNode-ai/omnimemory/branches/main/protection -X PUT
|
|
16
16
|
# Mode: strict (branch must be up-to-date before merging)
|
|
17
|
-
#
|
|
17
|
+
# Manifest entries (including CI Summary members): 15
|
|
18
18
|
|
|
19
19
|
required_checks:
|
|
20
|
+
- name: "pr-title / check-title"
|
|
21
|
+
workflow: pr-title-check.yml
|
|
22
|
+
job_id: pr-title
|
|
23
|
+
producer_kind: local
|
|
24
|
+
conditional: false
|
|
25
|
+
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.
|
|
42
|
+
|
|
20
43
|
# -- Phase 1: Quick Validation (parallel, ~2-5 min) -------------------------
|
|
21
44
|
|
|
22
45
|
- name: "Migration Freeze Check"
|
|
@@ -88,6 +111,28 @@ required_checks:
|
|
|
88
111
|
tests/unit/test_validate_ci_precommit_alignment.py fails if the pair
|
|
89
112
|
drifts apart.
|
|
90
113
|
|
|
114
|
+
- name: "Shape-Gate Independence (OMN-20298)"
|
|
115
|
+
workflow: ci.yml
|
|
116
|
+
job_id: shape-gate-independence
|
|
117
|
+
conditional: false
|
|
118
|
+
rationale: >-
|
|
119
|
+
OMN-20298. Refuses any shape-gate detector job that depends on the
|
|
120
|
+
change-control preflight. Unconditional (no needs, no if); gates merges
|
|
121
|
+
through the required CI Summary context, which needs: this job and
|
|
122
|
+
accepts only a success result.
|
|
123
|
+
|
|
124
|
+
- name: "Canonical File Shape (OMN-20304)"
|
|
125
|
+
workflow: ci.yml
|
|
126
|
+
job_id: canonical-file-shape
|
|
127
|
+
conditional: false
|
|
128
|
+
rationale: >-
|
|
129
|
+
OMN-20304. Refuses a new code file outside the canonical locations, new
|
|
130
|
+
imperative SKILL.md lines and any new baseline, allowlist or suppression
|
|
131
|
+
entry, against the shrink-only
|
|
132
|
+
.onex_ratchets/canonical_file_shape_baseline.txt. Gates merges through
|
|
133
|
+
the required CI Summary context, which needs: this job and accepts only a
|
|
134
|
+
success result.
|
|
135
|
+
|
|
91
136
|
# -- Phase 2: Full Test Suite ------------------------------------------------
|
|
92
137
|
|
|
93
138
|
- name: "Tests"
|
{omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/ban-hardcoded-runner-ip.yml
RENAMED
|
@@ -31,6 +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@
|
|
34
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/ban-hardcoded-runner-ip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
35
35
|
permissions:
|
|
36
36
|
contents: read
|
|
37
|
+
pull-requests: read
|
|
@@ -100,15 +100,17 @@ jobs:
|
|
|
100
100
|
github.actor != 'renovate[bot]' &&
|
|
101
101
|
(contains(github.event.pull_request.title, 'OMN-') ||
|
|
102
102
|
contains(github.event.pull_request.head.ref, 'OMN-'))
|
|
103
|
-
# OMN-
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
uses
|
|
103
|
+
# OMN-20001: the reusable and the omnimarket publisher it sources are both
|
|
104
|
+
# pinned to immutable revs (omniclaude 2a4123cf, omnimarket v0.4.276), never
|
|
105
|
+
# a sibling's live branch, so a merge there cannot turn this repo red.
|
|
106
|
+
# Bump both together in a consumer PR after an integration test of the new
|
|
107
|
+
# revs; tests/unit/test_workflow_sibling_pins.py fails closed on any
|
|
108
|
+
# sibling `uses:` / checkout without a 40-hex rev.
|
|
109
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-autobind-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
109
110
|
secrets: inherit
|
|
110
111
|
with:
|
|
111
112
|
lane: dev
|
|
113
|
+
omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
112
114
|
|
|
113
115
|
occ-autobind-manual-replay:
|
|
114
116
|
# OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
|
|
@@ -160,7 +162,7 @@ jobs:
|
|
|
160
162
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
161
163
|
with:
|
|
162
164
|
repository: OmniNode-ai/omnimarket
|
|
163
|
-
ref:
|
|
165
|
+
ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
164
166
|
path: .occ-autobind-src
|
|
165
167
|
persist-credentials: false
|
|
166
168
|
sparse-checkout: |
|
{omninode_memory-0.18.3 → omninode_memory-0.18.5}/.github/workflows/call-occ-companion-effect.yml
RENAMED
|
@@ -157,7 +157,7 @@ jobs:
|
|
|
157
157
|
github.actor != 'renovate[bot]' &&
|
|
158
158
|
(contains(github.event.pull_request.title, 'OMN-') ||
|
|
159
159
|
contains(github.event.pull_request.head.ref, 'OMN-'))
|
|
160
|
-
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@
|
|
160
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/call-occ-companion-effect-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
161
161
|
# OMN-18012: the dev lane declares SASL_PLAINTEXT/SCRAM-SHA-256, so the
|
|
162
162
|
# publisher needs the KAFKA_SASL_* credentials. The broker is still
|
|
163
163
|
# resolved from omnimarket's committed overlay, never from a secret.
|
|
@@ -167,6 +167,7 @@ jobs:
|
|
|
167
167
|
secrets: inherit # pragma: allowlist secret
|
|
168
168
|
with:
|
|
169
169
|
lane: dev
|
|
170
|
+
omnimarket-ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
170
171
|
|
|
171
172
|
occ-companion-effect-manual-replay:
|
|
172
173
|
# OMN-14993: manual re-publish entrypoint, gated to the workflow_dispatch
|
|
@@ -226,7 +227,7 @@ jobs:
|
|
|
226
227
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
227
228
|
with:
|
|
228
229
|
repository: OmniNode-ai/omnimarket
|
|
229
|
-
ref:
|
|
230
|
+
ref: e11987165b960cb86cdeab7d0ad3fe1884bb2572 # omnimarket v0.4.276
|
|
230
231
|
path: .occ-companion-effect-src
|
|
231
232
|
persist-credentials: false
|
|
232
233
|
sparse-checkout: |
|
|
@@ -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@
|
|
31
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/reject-deploy-gate-skip.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
32
32
|
secrets: inherit
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
# Repo Evidence Gate caller (OMN-20074, OCC retirement OR.6) verifies
|
|
5
|
+
# omnimemory's own contracts/<OMN-N>.yaml at the PR head through
|
|
6
|
+
# omnibase_core's receipt-gate reusable with evidence-source: caller.
|
|
7
|
+
# This is the path omnimarket proved as the canary (OMN-20070, OMN-20072).
|
|
8
|
+
#
|
|
9
|
+
# Why pull_request_target: GitHub reads the workflow definition from the BASE
|
|
10
|
+
# branch, so a pull request that edits this file or the reusable's pin does not
|
|
11
|
+
# change which definition runs on it. The pull request's own code is only ever
|
|
12
|
+
# checked out as data by the reusable, which refuses fork heads.
|
|
13
|
+
#
|
|
14
|
+
# dev and main are the integration branches. The activity types cover new heads,
|
|
15
|
+
# reopened and ready PRs, and edits to the ticket citation or base branch.
|
|
16
|
+
# Per-PR concurrency cancels superseded runs so the latest event gets a verdict.
|
|
17
|
+
# Read-only contents and pull-requests permissions are all this caller needs;
|
|
18
|
+
# checkout and verification belong to the reusable, with no caller secrets.
|
|
19
|
+
# The full-SHA pin makes the reusable immutable; verifier-version pins the
|
|
20
|
+
# released verifier used to read the caller's contracts.
|
|
21
|
+
#
|
|
22
|
+
# The job id is the context prefix: repo-evidence / dod-verify carries the
|
|
23
|
+
# verdict, so do not add a job name. The reusable also reports a
|
|
24
|
+
# repo-evidence / verify job in this mode as a success no-op (the OCC path,
|
|
25
|
+
# switched off by the input); only repo-evidence / dod-verify carries a verdict.
|
|
26
|
+
#
|
|
27
|
+
# 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".
|
|
37
|
+
#
|
|
38
|
+
# The reusable is pinned by full SHA to the squash commit of omnibase_core#1932
|
|
39
|
+
# on dev, a descendant of #1914; it carries the `shadow` input. omnimemory does
|
|
40
|
+
# not host receipt-gate.yml.
|
|
41
|
+
#
|
|
42
|
+
# The pinned reusable refuses a verifier-version below 0.4.303 before installing
|
|
43
|
+
# it (VERIFIER_FLOOR, omnibase_core#1932; OMN-20032), the first release that
|
|
44
|
+
# refuses a contract leaving a criterion unbound. 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.
|
|
47
|
+
|
|
48
|
+
name: Repo Evidence Gate
|
|
49
|
+
|
|
50
|
+
on:
|
|
51
|
+
pull_request_target:
|
|
52
|
+
types: [opened, synchronize, reopened, edited, ready_for_review]
|
|
53
|
+
branches: [dev, main]
|
|
54
|
+
|
|
55
|
+
concurrency:
|
|
56
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
|
|
57
|
+
cancel-in-progress: true
|
|
58
|
+
|
|
59
|
+
permissions:
|
|
60
|
+
contents: read
|
|
61
|
+
pull-requests: read
|
|
62
|
+
|
|
63
|
+
jobs:
|
|
64
|
+
repo-evidence:
|
|
65
|
+
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
|
+
with:
|
|
67
|
+
evidence-source: caller
|
|
68
|
+
verifier-version: 0.4.305
|
|
69
|
+
compare-with-occ: "true"
|
|
70
|
+
shadow: "true"
|
|
@@ -28,9 +28,8 @@ jobs:
|
|
|
28
28
|
uses: actions/checkout@v7
|
|
29
29
|
with:
|
|
30
30
|
repository: OmniNode-ai/omnibase_core
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
ref: 330a344cdb9c5dedd04a46dfbb0b63dae0baccfb
|
|
31
|
+
# Auto-bumped by omnibase_core publish-downstream-pin-bump.yml to bac865f4f32a.
|
|
32
|
+
ref: bac865f4f32a3f8ca80cabcfac06c8400d8c80d7
|
|
34
33
|
path: omnibase_core
|
|
35
34
|
|
|
36
35
|
- name: Verify omnibase_core checkout
|
|
@@ -8,6 +8,8 @@ on:
|
|
|
8
8
|
branches: [main, 'hotfix/**']
|
|
9
9
|
pull_request:
|
|
10
10
|
branches: [main, dev]
|
|
11
|
+
# OMN-18854: marking a draft ready must re-evaluate evidence admission.
|
|
12
|
+
types: [opened, synchronize, reopened, ready_for_review]
|
|
11
13
|
merge_group:
|
|
12
14
|
workflow_dispatch:
|
|
13
15
|
|
|
@@ -21,6 +23,37 @@ env:
|
|
|
21
23
|
CACHE_VERSION: "0.1.0"
|
|
22
24
|
|
|
23
25
|
jobs:
|
|
26
|
+
# OMN-18854: the existing eligibility validator must feed the required
|
|
27
|
+
# CI Summary. Other validations remain independent of this evidence gate.
|
|
28
|
+
occ-preflight:
|
|
29
|
+
if: github.event_name == 'pull_request' || github.event_name == 'merge_group'
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
pull-requests: read
|
|
33
|
+
uses: OmniNode-ai/omnibase_core/.github/workflows/occ-preflight.yml@13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
|
|
34
|
+
with:
|
|
35
|
+
core-ref: 13ceae69c246a33c9fc8fc4b33f83fb66b89edc6
|
|
36
|
+
contracts-dir: contracts
|
|
37
|
+
receipts-dir: drift/dod_receipts
|
|
38
|
+
|
|
39
|
+
# OMN-18854: evidence admission has its own verdict; shape detectors and
|
|
40
|
+
# their result aggregation do not branch directly on the evidence preflight.
|
|
41
|
+
occ-eligibility:
|
|
42
|
+
name: OCC Eligibility Admission
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: occ-preflight
|
|
45
|
+
if: always()
|
|
46
|
+
steps:
|
|
47
|
+
- name: Require eligible evidence on admission events
|
|
48
|
+
run: |
|
|
49
|
+
event="${{ github.event_name }}"
|
|
50
|
+
if [[ "$event" == "pull_request" || "$event" == "merge_group" ]]; then
|
|
51
|
+
if [[ "${{ needs.occ-preflight.result }}" != "success" ]]; then
|
|
52
|
+
echo "::error::occ-preflight did not pass (result: ${{ needs.occ-preflight.result }})"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
fi
|
|
56
|
+
|
|
24
57
|
# =============================================================================
|
|
25
58
|
# JOB ORDERING RATIONALE (Fail-Fast Optimization)
|
|
26
59
|
# =============================================================================
|
|
@@ -225,6 +258,10 @@ jobs:
|
|
|
225
258
|
- name: Pre-commit dependencies come from package indexes (OMN-19666)
|
|
226
259
|
run: bash tests/test_precommit_additional_dependencies_omn19666.sh
|
|
227
260
|
|
|
261
|
+
# OMN-18854: the same focused regression runs before commit and in CI.
|
|
262
|
+
- name: Verify OCC eligibility enforcement (OMN-18854)
|
|
263
|
+
run: uv run pytest tests/scripts/test_occ_eligibility_enforcement.py -q
|
|
264
|
+
|
|
228
265
|
# SYNC: Pre-commit hook 'validate-gitignore-baseline' at pre-commit stage (OMN-18033)
|
|
229
266
|
# This step and the hook both pin released omnibase-core==0.47.23,
|
|
230
267
|
# matching uv.lock and carrying the packaged baseline spec; move them together.
|
|
@@ -342,10 +379,21 @@ jobs:
|
|
|
342
379
|
# Uses default GITHUB_TOKEN which has read access to public repos in the org.
|
|
343
380
|
# Same pattern as omniclaude ci-cd.yml. If omnibase_core becomes private,
|
|
344
381
|
# add: token: ${{ secrets.OMNIBASE_CORE_ACCESS_TOKEN }}
|
|
382
|
+
# OMN-20001: read the omnibase_core rev this repo has PINNED (the one the
|
|
383
|
+
# omnibase_core downstream pin-bump bot maintains in check-handshake.yml),
|
|
384
|
+
# never core's live default branch.
|
|
385
|
+
- name: Resolve pinned omnibase_core rev
|
|
386
|
+
id: core-pin
|
|
387
|
+
run: |
|
|
388
|
+
rev="$(grep -E '^[[:space:]]+ref: [0-9a-f]{40}$' .github/workflows/check-handshake.yml | awk '{print $2}')"
|
|
389
|
+
[[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no single pinned omnibase_core rev in check-handshake.yml"; exit 1; }
|
|
390
|
+
echo "rev=$rev" >> "$GITHUB_OUTPUT"
|
|
391
|
+
|
|
345
392
|
- name: Checkout omnibase_core
|
|
346
393
|
uses: actions/checkout@v7
|
|
347
394
|
with:
|
|
348
395
|
repository: OmniNode-ai/omnibase_core
|
|
396
|
+
ref: ${{ steps.core-pin.outputs.rev }}
|
|
349
397
|
path: omnibase_core
|
|
350
398
|
|
|
351
399
|
- name: Verify handshake is current
|
|
@@ -604,10 +652,20 @@ jobs:
|
|
|
604
652
|
if: github.event_name == 'pull_request' || github.event_name == 'merge_group' || github.event_name == 'push'
|
|
605
653
|
steps:
|
|
606
654
|
- uses: actions/checkout@v7
|
|
655
|
+
# OMN-20001: read the onex_change_control rev pinned in pyproject.toml,
|
|
656
|
+
# never OCC's live default branch.
|
|
657
|
+
- name: Resolve pinned onex_change_control rev
|
|
658
|
+
id: occ-pin
|
|
659
|
+
run: |
|
|
660
|
+
rev="$(grep -oE 'onex_change_control\.git@[0-9a-f]{40}' pyproject.toml | head -1 | cut -d@ -f2)"
|
|
661
|
+
[[ "$rev" =~ ^[0-9a-f]{40}$ ]] || { echo "::error::no pinned onex_change_control rev in pyproject.toml"; exit 1; }
|
|
662
|
+
echo "rev=$rev" >> "$GITHUB_OUTPUT"
|
|
663
|
+
|
|
607
664
|
- name: Checkout onex_change_control
|
|
608
665
|
uses: actions/checkout@v7
|
|
609
666
|
with:
|
|
610
667
|
repository: OmniNode-ai/onex_change_control
|
|
668
|
+
ref: ${{ steps.occ-pin.outputs.rev }}
|
|
611
669
|
path: onex_change_control
|
|
612
670
|
|
|
613
671
|
- uses: astral-sh/setup-uv@v7
|
|
@@ -651,12 +709,36 @@ jobs:
|
|
|
651
709
|
- name: Ratchet non-canonical lifecycle-word classes against frozen allowlist (OMN-14350)
|
|
652
710
|
run: |
|
|
653
711
|
uv run --no-project \
|
|
654
|
-
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@
|
|
712
|
+
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@f50d00fc7918d0b12ccd0d3497160325e32e7ac5' \
|
|
655
713
|
python -m omnibase_core.validators.no_noncanonical_lifecycle_classes \
|
|
656
714
|
--check-stale \
|
|
657
715
|
--allowlist .onex_ratchets/noncanonical_class_allowlist.yaml \
|
|
658
716
|
src/omnimemory
|
|
659
717
|
|
|
718
|
+
shape-gate-independence:
|
|
719
|
+
name: Shape-Gate Independence (OMN-20298)
|
|
720
|
+
# OMN-20298: no shape-gate detector may depend on the change-control preflight.
|
|
721
|
+
# Unconditional (no needs, no if); wired into required CI Summary via needs: +
|
|
722
|
+
# strict success-only verdict check.
|
|
723
|
+
runs-on: ubuntu-latest
|
|
724
|
+
timeout-minutes: 10
|
|
725
|
+
steps:
|
|
726
|
+
- name: Checkout code
|
|
727
|
+
uses: actions/checkout@v7
|
|
728
|
+
- name: Set up Python
|
|
729
|
+
uses: actions/setup-python@v7
|
|
730
|
+
with:
|
|
731
|
+
python-version: "3.12"
|
|
732
|
+
- name: Install uv
|
|
733
|
+
uses: astral-sh/setup-uv@v7
|
|
734
|
+
with:
|
|
735
|
+
version: "0.8.3"
|
|
736
|
+
- name: Refuse shape-gate detectors that depend on the preflight (OMN-20298)
|
|
737
|
+
run: |
|
|
738
|
+
uv run --no-project \
|
|
739
|
+
--with 'omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@7f20b97895f01996c5858dde385ba8991c06e708' \
|
|
740
|
+
python -m omnibase_core.handlers.handler_shape_gate_independence
|
|
741
|
+
|
|
660
742
|
# ============================================================================
|
|
661
743
|
# Detect Secrets - the CI half of the .secrets.baseline gate (OMN-18669)
|
|
662
744
|
# ============================================================================
|
|
@@ -707,6 +789,7 @@ jobs:
|
|
|
707
789
|
--no-verify \
|
|
708
790
|
--baseline .secrets.baseline \
|
|
709
791
|
--exclude-files 'uv\.lock' \
|
|
792
|
+
--exclude-files 'hardcoded_model_config_baseline\.yaml' \
|
|
710
793
|
--exclude-files '\.venv/' \
|
|
711
794
|
--exclude-files 'tests/fixtures/' \
|
|
712
795
|
--exclude-files '\.git/' \
|
|
@@ -734,15 +817,103 @@ jobs:
|
|
|
734
817
|
exit $HOOK_EXIT
|
|
735
818
|
fi
|
|
736
819
|
|
|
820
|
+
# Canonical-file-shape ratchet (OMN-20304). Operator ruling 2026-10-01: no
|
|
821
|
+
# new scripts, plugins or exceptions in any repository. Refuses a new code
|
|
822
|
+
# file outside src/<pkg>/{nodes,handlers,models,protocols,contracts,enums}/,
|
|
823
|
+
# tests/ and docs/, new imperative lines in a SKILL.md, and any new baseline,
|
|
824
|
+
# allowlist, waiver or suppression entry. Existing files sit in the
|
|
825
|
+
# shrink-only .onex_ratchets/canonical_file_shape_baseline.txt. Same module
|
|
826
|
+
# and same omnibase_core commit as the canonical-file-shape pre-commit hook.
|
|
827
|
+
# Unconditional: no `if:`, no `needs:`. The positive-control step plants a
|
|
828
|
+
# bad sample on every run and fails unless the ratchet refuses it.
|
|
829
|
+
canonical-file-shape:
|
|
830
|
+
name: Canonical File Shape (OMN-20304)
|
|
831
|
+
runs-on: ubuntu-latest
|
|
832
|
+
timeout-minutes: 15
|
|
833
|
+
env:
|
|
834
|
+
CANONICAL_FILE_SHAPE_CORE: "omnibase-core @ git+https://github.com/OmniNode-ai/omnibase_core@031148215620031436cba30619bbae67c0bb38ad"
|
|
835
|
+
steps:
|
|
836
|
+
- name: Checkout code
|
|
837
|
+
uses: actions/checkout@v7
|
|
838
|
+
with:
|
|
839
|
+
fetch-depth: 0
|
|
840
|
+
- name: Set up Python
|
|
841
|
+
uses: actions/setup-python@v7
|
|
842
|
+
with:
|
|
843
|
+
python-version: "3.12"
|
|
844
|
+
- name: Install uv
|
|
845
|
+
uses: astral-sh/setup-uv@v7
|
|
846
|
+
with:
|
|
847
|
+
version: "0.8.3"
|
|
848
|
+
- name: Positive control (planted bad sample refused, clean sample accepted)
|
|
849
|
+
run: |
|
|
850
|
+
set -u
|
|
851
|
+
ratchet() {
|
|
852
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
853
|
+
python -m omnibase_core.validators.canonical_file_shape "$@"
|
|
854
|
+
}
|
|
855
|
+
mkdir -p bin tests
|
|
856
|
+
printf '#!/bin/sh\necho planted\n' > bin/zz_canary_planted
|
|
857
|
+
git add bin/zz_canary_planted
|
|
858
|
+
if ratchet; then
|
|
859
|
+
echo "POSITIVE CONTROL FAILED: planted bin/zz_canary_planted was accepted"
|
|
860
|
+
exit 1
|
|
861
|
+
fi
|
|
862
|
+
echo "positive control: planted bad sample refused"
|
|
863
|
+
git rm -q --cached bin/zz_canary_planted
|
|
864
|
+
rm bin/zz_canary_planted
|
|
865
|
+
printf 'def test_canary() -> None:\n assert True\n' > tests/zz_canary_clean.py
|
|
866
|
+
git add tests/zz_canary_clean.py
|
|
867
|
+
ratchet
|
|
868
|
+
echo "positive control: clean sample accepted"
|
|
869
|
+
git rm -q --cached tests/zz_canary_clean.py
|
|
870
|
+
rm tests/zz_canary_clean.py
|
|
871
|
+
- name: Refuse new non-canonical files and new exceptions
|
|
872
|
+
env:
|
|
873
|
+
PR_BASE: ${{ github.event.pull_request.base.sha }}
|
|
874
|
+
MQ_BASE: ${{ github.event.merge_group.base_sha }}
|
|
875
|
+
PUSH_BEFORE: ${{ github.event.before }}
|
|
876
|
+
run: |
|
|
877
|
+
set -u
|
|
878
|
+
base="${PR_BASE:-${MQ_BASE:-}}"
|
|
879
|
+
# OMN-20868: release.yml fast-forwards main to a dev sha, so a push's
|
|
880
|
+
# `before` is the previous release and the range spans every dev PR
|
|
881
|
+
# since then, each already checked here against dev, including
|
|
882
|
+
# commits that predate this ratchet. A push whose HEAD is on dev is
|
|
883
|
+
# checked against the baseline; any other push diffs its own range.
|
|
884
|
+
if [ -z "$base" ] && [ -n "${PUSH_BEFORE:-}" ]; then
|
|
885
|
+
git fetch -q --no-tags origin +refs/heads/dev:refs/remotes/origin/dev
|
|
886
|
+
if git merge-base --is-ancestor HEAD refs/remotes/origin/dev; then
|
|
887
|
+
echo "push of a commit already on dev (fast-forward of ${PUSH_BEFORE}..HEAD); each commit was checked on its dev PR"
|
|
888
|
+
else
|
|
889
|
+
base="$PUSH_BEFORE"
|
|
890
|
+
fi
|
|
891
|
+
fi
|
|
892
|
+
if [ -n "$base" ] && git cat-file -e "${base}^{commit}" 2>/dev/null; then
|
|
893
|
+
base="$(git merge-base "$base" HEAD)"
|
|
894
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
895
|
+
python -m omnibase_core.validators.canonical_file_shape --base "$base" --head HEAD
|
|
896
|
+
else
|
|
897
|
+
echo "no diff base for this event; checking the tree against the baseline only"
|
|
898
|
+
uv run --no-project --with "$CANONICAL_FILE_SHAPE_CORE" \
|
|
899
|
+
python -m omnibase_core.validators.canonical_file_shape --head HEAD
|
|
900
|
+
fi
|
|
901
|
+
|
|
737
902
|
ci-summary:
|
|
738
903
|
name: CI Summary
|
|
739
904
|
runs-on: ubuntu-latest
|
|
740
|
-
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]
|
|
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]
|
|
741
906
|
if: always()
|
|
742
907
|
|
|
743
908
|
steps:
|
|
744
909
|
- name: Check test results
|
|
745
910
|
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
|
|
746
917
|
# OMN-14350: strict fail-closed gate on the non-canonical lifecycle-class
|
|
747
918
|
# ratchet - only 'success' passes; skipped/cancelled/failure ALL block. It is
|
|
748
919
|
# in needs: so this job WAITS for it (no race).
|
|
@@ -750,6 +921,12 @@ jobs:
|
|
|
750
921
|
echo "::error::no-noncanonical-lifecycle-classes ratchet did not pass (result: ${{ needs.no-noncanonical-lifecycle-classes.result }}) - fail-closed (OMN-14350)"
|
|
751
922
|
exit 1
|
|
752
923
|
fi
|
|
924
|
+
# OMN-20298: strict fail-closed gate on shape-gate independence - only
|
|
925
|
+
# 'success' passes; skipped/cancelled/failure ALL block.
|
|
926
|
+
if [[ "${{ needs.shape-gate-independence.result }}" != "success" ]]; then
|
|
927
|
+
echo "::error::shape-gate-independence did not pass (result: ${{ needs.shape-gate-independence.result }}) - fail-closed (OMN-20298)"
|
|
928
|
+
exit 1
|
|
929
|
+
fi
|
|
753
930
|
# OMN-18669: strict fail-closed gate on the secrets scan - only 'success'
|
|
754
931
|
# passes; skipped/cancelled/failure ALL block. A secrets gate that a
|
|
755
932
|
# skipped job can satisfy is the state this ticket exists to remove.
|
|
@@ -757,6 +934,12 @@ jobs:
|
|
|
757
934
|
echo "::error::detect-secrets did not pass (result: ${{ needs.detect-secrets.result }}) - fail-closed (OMN-18669)"
|
|
758
935
|
exit 1
|
|
759
936
|
fi
|
|
937
|
+
# OMN-20304: strict fail-closed gate on the canonical-file-shape ratchet -
|
|
938
|
+
# only 'success' passes; skipped/cancelled/failure ALL block.
|
|
939
|
+
if [[ "${{ needs.canonical-file-shape.result }}" != "success" ]]; then
|
|
940
|
+
echo "::error::canonical-file-shape ratchet did not pass (result: ${{ needs.canonical-file-shape.result }}) - fail-closed (OMN-20304)"
|
|
941
|
+
exit 1
|
|
942
|
+
fi
|
|
760
943
|
migration_freeze="${{ needs.migration-freeze.result }}"
|
|
761
944
|
lint="${{ needs.lint.result }}"
|
|
762
945
|
pyright="${{ needs.pyright.result }}"
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
# Contract Validation Gate
|
|
5
5
|
#
|
|
6
|
-
# Validates ONEX ticket
|
|
7
|
-
#
|
|
6
|
+
# Validates the ONEX ticket contract of a PR's branch ticket with the installed
|
|
7
|
+
# omnibase_core ModelTicketContract, at omnimemory's locked core version
|
|
8
|
+
# (OMN-20074). Core refuses a binds_ac entry that is not a criterion label and a
|
|
9
|
+
# binds_ac item with check_type command_exit_0 (omnibase_core#1935).
|
|
8
10
|
#
|
|
9
11
|
# Required status check: "contract-validation"
|
|
10
12
|
# Must pass (or skip) before merging to main.
|
|
@@ -49,19 +51,6 @@ jobs:
|
|
|
49
51
|
timeout-minutes: 10
|
|
50
52
|
|
|
51
53
|
steps:
|
|
52
|
-
- name: Auth preflight — confirm onex_change_control action is accessible
|
|
53
|
-
id: auth-preflight
|
|
54
|
-
env:
|
|
55
|
-
GH_TOKEN: ${{ github.token }}
|
|
56
|
-
run: |
|
|
57
|
-
echo "Checking visibility of OmniNode-ai/onex_change_control..."
|
|
58
|
-
if gh api repos/OmniNode-ai/onex_change_control --silent; then
|
|
59
|
-
echo "::notice::onex_change_control repo is accessible."
|
|
60
|
-
else
|
|
61
|
-
echo "::error::Cannot reach OmniNode-ai/onex_change_control. Composite action will not resolve."
|
|
62
|
-
exit 1
|
|
63
|
-
fi
|
|
64
|
-
|
|
65
54
|
- name: Resolve branch name
|
|
66
55
|
id: resolve-branch
|
|
67
56
|
env:
|
|
@@ -92,13 +81,88 @@ jobs:
|
|
|
92
81
|
echo "resolved_branch=$BRANCH" >> "$GITHUB_OUTPUT"
|
|
93
82
|
echo "::notice::Resolved branch name: $BRANCH"
|
|
94
83
|
|
|
84
|
+
- name: Check out calling repository
|
|
85
|
+
if: steps.resolve-branch.outputs.skip_validation != 'true'
|
|
86
|
+
uses: actions/checkout@v4
|
|
87
|
+
with:
|
|
88
|
+
ref: ${{ github.sha }}
|
|
89
|
+
persist-credentials: false
|
|
90
|
+
|
|
91
|
+
- name: Set up uv
|
|
92
|
+
if: steps.resolve-branch.outputs.skip_validation != 'true'
|
|
93
|
+
uses: astral-sh/setup-uv@v7
|
|
94
|
+
with:
|
|
95
|
+
enable-cache: true
|
|
96
|
+
cache-dependency-glob: uv.lock
|
|
97
|
+
|
|
95
98
|
- name: Run contract validation
|
|
96
99
|
id: validate-contract
|
|
97
100
|
if: steps.resolve-branch.outputs.skip_validation != 'true'
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
env:
|
|
102
|
+
BRANCH: ${{ steps.resolve-branch.outputs.resolved_branch }}
|
|
103
|
+
UV_HTTP_TIMEOUT: "600"
|
|
104
|
+
run: |
|
|
105
|
+
set -euo pipefail
|
|
106
|
+
|
|
107
|
+
TICKET_ID=$(printf '%s\n' "$BRANCH" | grep -ioE 'OMN-[0-9]+' | head -n 1 | tr '[:lower:]' '[:upper:]' || true)
|
|
108
|
+
echo "ticket-id=$TICKET_ID" >> "$GITHUB_OUTPUT"
|
|
109
|
+
|
|
110
|
+
if [[ -z "$TICKET_ID" ]]; then
|
|
111
|
+
echo "validation-status=skipped" >> "$GITHUB_OUTPUT"
|
|
112
|
+
echo "::notice::No OMN-XXXX ticket ID found in branch name; contract validation skipped."
|
|
113
|
+
exit 0
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
CONTRACT_PATH="contracts/$TICKET_ID.yaml"
|
|
117
|
+
if [[ ! -f "$CONTRACT_PATH" ]]; then
|
|
118
|
+
CONTRACT_PATH="contracts/${TICKET_ID,,}.yaml"
|
|
119
|
+
fi
|
|
120
|
+
if [[ ! -f "$CONTRACT_PATH" ]]; then
|
|
121
|
+
echo "validation-status=skipped" >> "$GITHUB_OUTPUT"
|
|
122
|
+
echo "::notice::No contract file found for $TICKET_ID in contracts/; contract validation skipped."
|
|
123
|
+
exit 0
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
for attempt in 1 2 3; do
|
|
127
|
+
if uv sync --locked --no-dev; then
|
|
128
|
+
break
|
|
129
|
+
fi
|
|
130
|
+
if [[ "$attempt" -eq 3 ]]; then
|
|
131
|
+
echo "validation-status=failed" >> "$GITHUB_OUTPUT"
|
|
132
|
+
echo "::error::Failed to sync omnimemory dependencies after 3 attempts."
|
|
133
|
+
exit 1
|
|
134
|
+
fi
|
|
135
|
+
sleep "$((10 * attempt))"
|
|
136
|
+
done
|
|
137
|
+
|
|
138
|
+
if uv run --no-sync python3 - "$CONTRACT_PATH" <<'PY'
|
|
139
|
+
import sys
|
|
140
|
+
from pathlib import Path
|
|
141
|
+
|
|
142
|
+
from omnibase_core.models.errors.model_onex_error import ModelOnexError
|
|
143
|
+
from omnibase_core.models.ticket.model_ticket_contract import ModelTicketContract
|
|
144
|
+
|
|
145
|
+
paths = [Path(arg) for arg in sys.argv[1:]]
|
|
146
|
+
broken = []
|
|
147
|
+
for path in paths:
|
|
148
|
+
try:
|
|
149
|
+
ModelTicketContract.from_yaml(path.read_text(encoding="utf-8"))
|
|
150
|
+
except (OSError, ModelOnexError) as exc:
|
|
151
|
+
broken.append((path, " ".join(str(exc).split())))
|
|
152
|
+
|
|
153
|
+
for path, reason in broken:
|
|
154
|
+
print(f"::error file={path.as_posix()}::{path.as_posix()}: {reason}")
|
|
155
|
+
if broken:
|
|
156
|
+
print(f"ERROR: {len(broken)} of {len(paths)} ticket contract(s) fail omnibase_core's ModelTicketContract.")
|
|
157
|
+
sys.exit(1)
|
|
158
|
+
print(f"OK: {len(paths)} ticket contract(s) pass omnibase_core's ModelTicketContract.")
|
|
159
|
+
PY
|
|
160
|
+
then
|
|
161
|
+
echo "validation-status=passed" >> "$GITHUB_OUTPUT"
|
|
162
|
+
else
|
|
163
|
+
echo "validation-status=failed" >> "$GITHUB_OUTPUT"
|
|
164
|
+
exit 1
|
|
165
|
+
fi
|
|
102
166
|
|
|
103
167
|
- name: Report validation result
|
|
104
168
|
if: always()
|
|
@@ -127,6 +191,7 @@ jobs:
|
|
|
127
191
|
exit 1
|
|
128
192
|
;;
|
|
129
193
|
*)
|
|
130
|
-
echo "::
|
|
194
|
+
echo "::error::Contract validation did not finish: '$VALIDATION_STATUS'."
|
|
195
|
+
exit 1
|
|
131
196
|
;;
|
|
132
197
|
esac
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2025 OmniNode.ai Inc.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
# OMN-19183, plan beta/plans/2026-09-23-remove-hardcoded-model-config.md task A3.
|
|
5
|
+
# Guard is blocking; baseline may only shrink.
|
|
6
|
+
|
|
7
|
+
name: Hardcoded Model Config
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [dev]
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
18
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
hardcoded-model-config:
|
|
22
|
+
uses: OmniNode-ai/omniclaude/.github/workflows/hardcoded-model-config-reusable.yml@3ea5bfc90dec0efd386214247b38c8c2cc46508d
|
|
23
|
+
with:
|
|
24
|
+
core_ref: f873d2c30201c05d4be020fa0b281b5edbfb8307
|