Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions contracts/OMN-20159.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,65 @@ dod_evidence:
proposed_by: "lane=dod-closeout-bind-2026-10-04T0245Z-c1"
accepted_by: "lane=dod-closeout-accept-2026-10-04T0245Z-c1"
accepted_at: "2026-10-04T03:33:10Z"
- id: "occ-self-bind-pr-12753"
description: "OCC companion PR #12753 — self-bind for OMN-20159 (OMN-14650)."
source: "generated"
checks:
- check_type: "command"
check_value: "gh pr view 12753 --repo OmniNode-ai/onex_change_control --json number,state"
- id: "dod-OmniNode-ai-omnimarket-pr-3364"
description: "PR #3364 on OmniNode-ai/omnimarket — Evidence-Source autobind."
source: "generated"
checks:
- check_type: "command"
check_value: |-
gh api repos/OmniNode-ai/omnimarket/contents/src/omnimarket/projection/runner.py?ref=1b92bb879d1aab72a5dd7fd248b26e645c762876 --jq '.content' | base64 -d | grep -c 'class ProjectionReadBindingOverlayError'
binds_ac:
- "AC1"
- "AC2"
- "AC3"
- "AC4"
- "AC5"
ac_bindings:
- label: "AC1"
criterion_hash: "7089809459d60bdbb8d88c232d49df7e7b5b26aa23cb431172403cf8622509c6"
proposed_by: "occ-autobind"
accepted_by: "7a850ce1-f95e-431f-b4e3-62f7449f04c0"
accepted_at: "2026-09-30T16:27:45Z"
- label: "AC2"
criterion_hash: "73efc2c42162afc8ffa4f4366db640deee0c9453077453b6868f98f8263b7b84"
proposed_by: "occ-autobind"
accepted_by: "7a850ce1-f95e-431f-b4e3-62f7449f04c0"
accepted_at: "2026-09-30T16:27:45Z"
- label: "AC3"
criterion_hash: "4096fbfc4a786ded8ffe1ff319df174ea639702a96741e02aa68db8f18969037"
proposed_by: "occ-autobind"
accepted_by: "7a850ce1-f95e-431f-b4e3-62f7449f04c0"
accepted_at: "2026-09-30T16:27:45Z"
- label: "AC4"
criterion_hash: "1472d66a8ffb0a9af44326c1396c9fdc1fb2ddaaa2f627c2fe31868c5609ab5e"
proposed_by: "occ-autobind"
accepted_by: "7a850ce1-f95e-431f-b4e3-62f7449f04c0"
accepted_at: "2026-09-30T16:27:45Z"
- label: "AC5"
criterion_hash: "a05feb312fda67f5a4487fb0b14f2f5ff7007d2ba4a17b2e164f5effffc16fb0"
proposed_by: "occ-autobind"
accepted_by: "7a850ce1-f95e-431f-b4e3-62f7449f04c0"
accepted_at: "2026-09-30T16:27:45Z"
- id: "dod-OmniNode-ai-omnimarket-pr-3364-ci"
description: "PR #3364 on OmniNode-ai/omnimarket — product diff scope check (OMN-14425)."
source: "generated"
checks:
- check_type: "command"
check_value: "gh pr view 3364 --repo OmniNode-ai/omnimarket --json files"
- id: "dod-occ-diff-derived-behavior-proof-pr-3364"
description: "PR #3364 on OmniNode-ai/omnimarket — diff-derived behavior proof (OMN-16434)."
source: "generated"
checks:
- check_type: "test_passes"
check_value: |-
uv run pytest tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py tests/projection/test_api_server_local_mode.py tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py tests/unit/projection/test_projection_binding_env_discipline_omn20159.py -q
cwd: "${OMNI_HOME}/omnimarket"
- id: "dod-accept-0245z-20159-ac3-tenant-scoping"
description: |-
AC3 binding proposed by lane dod-closeout-bind-2026-10-04T0245Z-c1 and accepted by a different lane, dod-closeout-accept-2026-10-04T0245Z-c1, after an independent re-run at omnimarket origin/dev e072fb95b against native PostgreSQL (7 passed, 16 deselected, skipped=0, rc=0). In one real table tenant A reads only its 3 rows and tenant B only its 2; a scoped exposure with no tenant gets tenant_context_unresolved and no rows; the envelope tenant scopes the read; an envelope tenant that disagrees with the payload tenant is refused with tenant_conflict.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-20159"
evidence_item_id: "dod-OmniNode-ai-omnimarket-pr-3364-ci"
check_type: "command"
check_value: "gh pr view 3364 --repo OmniNode-ai/omnimarket --json files"
contract_sha256: "sha256:8d603d50c7b2bb6ef567db0529835ec75db991d89f6f373a7892245d55267fc3"
contract_entry_sha256: "sha256:9ed5577ff559a87e115ed428ff660eb9ba907e6067d688c4b325bb50666e9832"
status: PASS
run_timestamp: "2026-10-04T08:28:00Z"
commit_sha: "1b92bb879d1aab72a5dd7fd248b26e645c762876"
runner: "node_pr_lifecycle_fix_effect"
verifier: "occ-evidence-source-autobind"
probe_command: "gh pr view 3364 --repo OmniNode-ai/omnimarket --json files"
probe_stdout: |
{"files":[{"additions":7,"deletions":6,"path":"src/omnimarket/nodes/node_local_dashboard_serve_effect/handlers/handler_local_dashboard_serve.py"},{"additions":4,"deletions":3,"path":"src/omnimarket/nodes/node_projection_read_effect/handlers/handler_projection_read.py"},{"additions":34,"deletions":16,"path":"src/omnimarket/nodes/node_projection_read_effect/ports/read_source_resolution.py"},{"additions":57,"deletions":0,"path":"src/omnimarket/projection/runner.py"},{"additions":1,"deletions":0,"path":"tests/conftest.py"},{"additions":305,"deletions":0,"path":"tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py"},{"additions":133,"deletions":1,"path":"tests/projection/test_api_server_local_mode.py"},{"additions":643,"deletions":0,"path":"tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py"},{"additions":175,"deletions":0,"path":"tests/unit/projection/test_projection_binding_env_discipline_omn20159.py"}]}
actual_output: "PASS: product-diff-scope for OMN-20159 from OmniNode-ai/omnimarket#3364."
exit_code: 0
pr_number: 3364
branch: "auto/window-omninode-ai-omnimarket-occ-autobind"
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-20159"
evidence_item_id: "dod-OmniNode-ai-omnimarket-pr-3364"
check_type: "command"
check_value: |-
gh api repos/OmniNode-ai/omnimarket/contents/src/omnimarket/projection/runner.py?ref=1b92bb879d1aab72a5dd7fd248b26e645c762876 --jq '.content' | base64 -d | grep -c 'class ProjectionReadBindingOverlayError'
contract_sha256: "sha256:8d603d50c7b2bb6ef567db0529835ec75db991d89f6f373a7892245d55267fc3"
contract_entry_sha256: "sha256:b10eaab0f92a93f13d38a16e86044f3583023722b8cf27ec10b78017a6036bff"
status: PASS
run_timestamp: "2026-10-04T08:28:00Z"
commit_sha: "1b92bb879d1aab72a5dd7fd248b26e645c762876"
runner: "node_pr_lifecycle_fix_effect"
verifier: "occ-evidence-source-autobind"
probe_command: |-
gh api repos/OmniNode-ai/omnimarket/contents/src/omnimarket/projection/runner.py?ref=1b92bb879d1aab72a5dd7fd248b26e645c762876 --jq '.content' | base64 -d | grep -c 'class ProjectionReadBindingOverlayError'
probe_stdout: |
{"evidence_ref":"1b92bb879d1aab72a5dd7fd248b26e645c762876","green_exit":0,"red_exit":1,"red_ref":"796051348e4f9cd8cebae875bf3e3cc39bb2cce1"}
actual_output: |-
PASS: content-bound probe GREEN at 1b92bb879d1aab72a5dd7fd248b26e645c762876, RED at merge-base 796051348e4f9cd8cebae875bf3e3cc39bb2cce1 (exit 1).
exit_code: 0
pr_number: 3364
branch: "auto/window-omninode-ai-omnimarket-occ-autobind"
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
check_type: test_passes
created_at: '2026-10-04T08:48:57Z'
evidence_item_id: dod-occ-diff-derived-behavior-proof-pr-3364
reason: 'Re-executed for PR #3364 at head ce0961aec960b6a848ed77d0cbbec2a91c298330. The prior executed
attempt recorded FAIL at 1b92bb879d1aab72a5dd7fd248b26e645c762876; since then the head moved from 1b92bb879d1aab72a5dd7fd248b26e645c762876
to ce0961aec960b6a848ed77d0cbbec2a91c298330. This record supersedes that attempt and does not edit it.'
replacement:
actual_output: 'PASS: declared check executed in the OmniNode-ai/omnimarket checkout at PR #3364 head;
exit status 0. Run: https://github.com/OmniNode-ai/omnimarket/actions/runs/37190086322'
branch: lakshman/OMN-20159-read-binding-overlay
check_type: test_passes
check_value: |-
repos/OmniNode-ai/omnimarket/commits/ce0961aec960b6a848ed77d0cbbec2a91c298330
uv run pytest tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py tests/projection/test_api_server_local_mode.py tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py tests/unit/projection/test_projection_binding_env_discipline_omn20159.py -q
commit_sha: ce0961aec960b6a848ed77d0cbbec2a91c298330
contract_entry_sha256: sha256:342d36848ead7d83880319ff754ec2a701299bfbe1af20ef2310ef9f27117057
duration_ms: 15070
evidence_item_id: dod-occ-diff-derived-behavior-proof-pr-3364
exit_code: 0
pr_number: 3364
probe_command: |-
repos/OmniNode-ai/omnimarket/commits/ce0961aec960b6a848ed77d0cbbec2a91c298330
uv run pytest tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py tests/projection/test_api_server_local_mode.py tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py tests/unit/projection/test_projection_binding_env_discipline_omn20159.py -q
probe_stdout: |-
.................................................................. [100%]
=============================== warnings summary ===============================
.venv/lib/python3.12/site-packages/starlette/testclient.py:53
/home/runner/work/omnimarket/omnimarket/.venv/lib/python3.12/site-packages/starlette/testclient.py:53: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
_PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
66 passed, 1 warning in 9.01s
run_timestamp: '2026-10-04T08:48:57Z'
runner: omnimarket-ci occ-receipt-runner
schema_version: 1.0.0
status: PASS
ticket_id: OMN-20159
verifier: github-actions product-repo test execution
working_dir: null
schema_version: 1.0.0
superseder: omnimarket-ci occ-receipt-runner
supersedes: drift/dod_receipts/OMN-20159/dod-occ-diff-derived-behavior-proof-pr-3364/test_passes.yaml
ticket_id: OMN-20159
tombstone: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
check_type: test_passes
created_at: '2026-10-04T08:29:54Z'
evidence_item_id: dod-occ-diff-derived-behavior-proof-pr-3364
reason: 'The base receipt records status PENDING: the check was declared but not executed, because the
minting producer runs in the effects runtime with no product-repo checkout (OMN-16859). This record
rebinds the key to a receipt produced by executing the declared check for real in the product checkout
at PR #3364 head.'
replacement:
actual_output: 'FAIL: declared check executed in the OmniNode-ai/omnimarket checkout at PR #3364 head;
exit status 1. Run: https://github.com/OmniNode-ai/omnimarket/actions/runs/37189043654'
branch: lakshman/OMN-20159-read-binding-overlay
check_type: test_passes
check_value: |-
repos/OmniNode-ai/omnimarket/commits/1b92bb879d1aab72a5dd7fd248b26e645c762876
uv run pytest tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py tests/projection/test_api_server_local_mode.py tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py tests/unit/projection/test_projection_binding_env_discipline_omn20159.py -q
commit_sha: 1b92bb879d1aab72a5dd7fd248b26e645c762876
contract_entry_sha256: sha256:342d36848ead7d83880319ff754ec2a701299bfbe1af20ef2310ef9f27117057
duration_ms: 16863
evidence_item_id: dod-occ-diff-derived-behavior-proof-pr-3364
exit_code: 1
pr_number: 3364
probe_command: |-
repos/OmniNode-ai/omnimarket/commits/1b92bb879d1aab72a5dd7fd248b26e645c762876
uv run pytest tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py tests/projection/test_api_server_local_mode.py tests/unit/nodes/node_projection_read_effect/test_read_binding_apart_from_claim_store_omn20159.py tests/unit/projection/test_projection_binding_env_discipline_omn20159.py -q
probe_stdout: "F................................................................. [100%]\n===================================
FAILURES ===================================\n______________ test_f1_read_binding_reads_and_never_holds_a_claim
______________\n\nreader_world = {'superuser_dsn': 'postgresql://postgres:test_password@127.0.0.1:32768/omnibase_infra',
'reader_dsn': 'postgresql://om...fb5872@127.0.0.1:32768/omnibase_infra', 'read_schema': 'omn20159r_5111fb8640',
'claims_schema': 'omn20159c_5111fb8640'}\ntmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_f1_read_binding_reads_and0')\nmonkeypatch
= <_pytest.monkeypatch.MonkeyPatch object at 0x7f3145abc980>\n\n @pytest.mark.integration\n async
def test_f1_read_binding_reads_and_never_holds_a_claim(\n reader_world: dict[str, str],\n tmp_path:
Path,\n monkeypatch: pytest.MonkeyPatch,\n ) -> None:\n overlay = tmp_path / \"projection-read-binding.yaml\"\n
\ overlay.write_text(\n yaml.safe_dump(\n {\n \"kafka_bootstrap_servers\":
\"127.0.0.1:1\",\n \"kafka_consumer_group\": \"local.omnimarket-projections.runtime-read\",\n
\ \"database_url\": reader_world[\"reader_dsn\"],\n }\n ),\n
\ encoding=\"utf-8\",\n )\n monkeypatch.setenv(_READ_ENV, str(overlay))\n
\ monkeypatch.delenv(_RUNTIME_ENV, raising=False)\n monkeypatch.delenv(\"OMNIDASH_ANALYTICS_DB_URL\",
raising=False)\n monkeypatch.delenv(\"OMNINODE_INTERNAL_DB_URL\", raising=False)\n #
tests/integration is exempt from the conftest fixture that moves the\n # state root, so the
local claim file is put under this test's tmp_path\n # here rather than in whatever state root
the host declares.\n state_root = tmp_path / \"onex_state\"\n monkeypatch.setenv(\"ONEX_STATE_DIR\",
str(state_root))\n monkeypatch.delenv(\"ONEX_STATE_ROOT\", raising=False)\n # The fleet
default; a host that enforces would refuse the control's\n # tenant-less claim row before any
SQL ran.\n monkeypatch.setattr(\n tenant_isolation_module,\n \"get_settings\",\n
\ lambda: Settings(enforce_tenant_isolation=False, onex_tenant_id=\"\"),\n )\n _pin_claims_schema(monkeypatch,
tmp_path, reader_world[\"claims_schema\"])\n assert claim_module.claims_schema() == reader_world[\"claims_schema\"]\n
\ \n # Positive control: the store a claim store following the read binding\n # would
build lands its claim in the counted table, and the count sees it.\n following = claim_module.DelegationClaimPort(\n
\ _adapter_for_dsn(\n reader_world[\"reader_dsn\"], postgres_schema=claim_module.claims_schema()\n
\ )\n )\n assert following.claim(delivery_id=uuid4(), correlation_id=uuid4()).won
is True\n rows_before = _claim_rows(\n reader_world[\"superuser_dsn\"], reader_world[\"claims_schema\"]\n
\ )\n assert rows_before == 1\n \n # The read node reads through the read binding's
role.\n handler = HandlerProjectionRead(\n topic_map={_DECISIONS: _cfg(reader_world[\"read_schema\"])}\n
\ )\n try:\n result = await handler.handle(\n ModelProjectionReadRequest(topic=_DECISIONS,
tenant_id=_TENANT)\n )\n finally:\n await handler.close()\n assert
result.ok is True, result\n assert result.row_count == 3\n \n # The claim store does
not follow it. Claims first, then the count, so a\n # store that did follow it is caught by
the count, not by a type check.\n delivery = uuid4()\n first = claim_module.resolve_delegation_claim_store()\n
\ assert first.claim(delivery_id=delivery, correlation_id=uuid4()).won is True\n second
= claim_module.resolve_delegation_claim_store()\n assert second.claim(delivery_id=delivery,
correlation_id=uuid4()).won is False\n \n assert (\n _claim_rows(reader_world[\"superuser_dsn\"],
reader_world[\"claims_schema\"])\n == rows_before\n )\n local = first._database()\n
\ assert isinstance(local, SqliteDatabaseAdapter)\n> assert local.db_path == state_root
/ \"delegation\" / \"delegation_claims.sqlite\"\nE AssertionError: assert PosixPath('/tmp/pytest-of-runner/pytest-0/delegation-claims0/claims.sqlite')
== ((PosixPath('/tmp/pytest-of-runner/pytest-0/test_f1_read_binding_reads_and0/onex_state') / 'delegation')
/ 'delegation_claims.sqlite')\nE + where PosixPath('/tmp/pytest-of-runner/pytest-0/delegation-claims0/claims.sqlite')
= <omnimarket.projection.sqlite_database.SqliteDatabaseAdapter object at 0x7f3145919ac0>.db_path\n\ntests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py:305:
AssertionError\n=============================== warnings summary ===============================\n.venv/lib/python3.12/site-packages/starlette/testclient.py:53\n
\ /home/runner/work/omnimarket/omnimarket/.venv/lib/python3.12/site-packages/starlette/testclient.py:53:
DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal
instead.\n _PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]\n\n--
Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n===========================
short test summary info ============================\nFAILED tests/integration/nodes/node_projection_read_effect/test_read_binding_reader_role_real_postgres_omn20159.py::test_f1_read_binding_reads_and_never_holds_a_claim
- AssertionError: assert PosixPath('/tmp/pytest-of-runner/pytest-0/delegation-claims0/claims.sqlite')
== ((PosixPath('/tmp/pytest-of-runner/pytest-0/test_f1_read_binding_reads_and0/onex_state') / 'delegation')
/ 'delegation_claims.sqlite')\n + where PosixPath('/tmp/pytest-of-runner/pytest-0/delegation-claims0/claims.sqlite')
= <omnimarket.projection.sqlite_database.SqliteDatabaseAdapter object at 0x7f3145919ac0>.db_path\n1
failed, 65 passed, 1 warning in 10.51s"
run_timestamp: '2026-10-04T08:29:54Z'
runner: omnimarket-ci occ-receipt-runner
schema_version: 1.0.0
status: FAIL
ticket_id: OMN-20159
verifier: github-actions product-repo test execution
working_dir: null
schema_version: 1.0.0
superseder: omnimarket-ci occ-receipt-runner
supersedes: drift/dod_receipts/OMN-20159/dod-occ-diff-derived-behavior-proof-pr-3364/test_passes.yaml
ticket_id: OMN-20159
tombstone: false
Loading
Loading