Repository navigation
chore(OMN-18010): post-release dev version bump to 0.4.217 [release-on-merge] - #2874
Merged
jonahgabriel merged 2 commits intoSep 25, 2026
Merged
Conversation
Disarms the OMN-16344 release-identity gate that publishing v0.4.216 armed against dev. Triggered-by: https://github.com/OmniNode-ai/omnimarket/actions/runs/36050759868
✅ Architectural Review — PASSEDErrors: 0 What this checks
No architectural violations found. Static architectural lint — no model inference (OMN-14176). |
✅ Hostile Reviewer — PASSEDBlocking findings (critical/error): 0 Gate semantics
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524) |
jonahgabriel
disabled auto-merge
September 25, 2026 01:39
jonahgabriel
pushed a commit
that referenced
this pull request
Sep 25, 2026
…anged, so this branch passes the release-identity gate; #2874 lands first Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4
jonahgabriel
deleted the
automation/omn-18010-post-release-dev-bump-0.4.217
branch
September 25, 2026 01:59
jonahgabriel
added a commit
that referenced
this pull request
Sep 25, 2026
…tion accepts (#2779) * feat(OMN-18901): publish the DoD verify verdict in a shape the projection accepts Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): fresh head for the first non-draft CI run Onex-Lane: land-3959-1330 Onex-Session: 825bf9dc4dcf44d4ba2d44657d592eab * fix(OMN-18901): unroute the pure fold, let the fold decide a rehearsal, and require the run window - Contract: the pure fold is no longer a handler_routing entry. With no event_model it was dispatched on the verdict topic beside the writer and failed every dispatch (22 validation errors for the request model), so each stored verdict was also dead-lettered, replayed five times and quarantined on the .201 dev lane (2026-09-24T22:56Z). Even with the bare dict accepted, a reducer's returned model becomes a projection intent the auto-wired applier has no effect for (RuntimeHostError, probed in-container). The writer calls the fold in-process. - Rule 7a: the dry-run decision moves from the writer into the pure fold (row=None); the writer persists only what the fold hands it. - A declined rehearsal reports rows_refused_by_ordering_guard=1 beside rows_upserted=0, so the runtime logs it as expected (OMN-18992) instead of the 'wrote zero rows' ERROR, and its apply counter does not score it as a silent write-path gap. Pinned against real Postgres. - ModelDodVerifyState.started_at/completed_at are required: no defaulted, construction-time window the projection would store as history. - make_completed_event drops its caller-supplied started_at: one source for the window. - The dod_verify contract's dry_run description says what a rehearsal does. Onex-Lane: dod-verdict-publisher-2779 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): carry omnimarket#2874's v0.4.217 dev-open bump unchanged, so this branch passes the release-identity gate; #2874 lands first Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * fix(OMN-18901): the routing check counts a canonical fold the node's routed writer constructs as reachable The rule-7a projection split leaves the pure fold unrouted and runs it inside the writer. The missing-routing check read that as an undispatchable handler and flagged node_projection_dod_verdict. A routed module in the node's own package that imports AND calls the canonical class now proves reachability; an import alone, or a writer in another node, still fires. Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 --------- Co-authored-by: onexbot-occ-writer[bot] <onexbot-occ-writer[bot]@users.noreply.github.com>
jonahgabriel
added a commit
that referenced
this pull request
Sep 25, 2026
…laude DoD-verify-completed spelling (#2882) * feat(OMN-18901): publish the DoD verify verdict in a shape the projection accepts Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): fresh head for the first non-draft CI run Onex-Lane: land-3959-1330 Onex-Session: 825bf9dc4dcf44d4ba2d44657d592eab * fix(OMN-18901): unroute the pure fold, let the fold decide a rehearsal, and require the run window - Contract: the pure fold is no longer a handler_routing entry. With no event_model it was dispatched on the verdict topic beside the writer and failed every dispatch (22 validation errors for the request model), so each stored verdict was also dead-lettered, replayed five times and quarantined on the .201 dev lane (2026-09-24T22:56Z). Even with the bare dict accepted, a reducer's returned model becomes a projection intent the auto-wired applier has no effect for (RuntimeHostError, probed in-container). The writer calls the fold in-process. - Rule 7a: the dry-run decision moves from the writer into the pure fold (row=None); the writer persists only what the fold hands it. - A declined rehearsal reports rows_refused_by_ordering_guard=1 beside rows_upserted=0, so the runtime logs it as expected (OMN-18992) instead of the 'wrote zero rows' ERROR, and its apply counter does not score it as a silent write-path gap. Pinned against real Postgres. - ModelDodVerifyState.started_at/completed_at are required: no defaulted, construction-time window the projection would store as history. - make_completed_event drops its caller-supplied started_at: one source for the window. - The dod_verify contract's dry_run description says what a rehearsal does. Onex-Lane: dod-verdict-publisher-2779 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): carry omnimarket#2874's v0.4.217 dev-open bump unchanged, so this branch passes the release-identity gate; #2874 lands first Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * fix(OMN-18901): the routing check counts a canonical fold the node's routed writer constructs as reachable The rule-7a projection split leaves the pure fold unrouted and runs it inside the writer. The missing-routing check read that as an undispatchable handler and flagged node_projection_dod_verdict. A routed module in the node's own package that imports AND calls the canonical class now proves reachability; an import alone, or a writer in another node, still fires. Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-19153): the emit daemon stops fanning out omniclaude's retired DoD-verify-completed spelling Removes the registry rule, the contract publish entry and its externally consumed escape hatch, and the tests pinning them. The surviving spelling is node_dod_verify's own terminal. The two repos check each other's registries, so this lands first with a two-line transient drift carve-out; the omniclaude half lands second, and a follow-up removes the carve-out. * chore(OMN-19153): drop the dep-health baseline finding for the retired topic, which no contract publishes any more * test(OMN-19153): step the emit parity ratchet down for the retired dod-verify kind The registry drops one event type (67 -> 66) that fanned out to one keyed topic, so published and enriched records go 70 -> 69 and keyed 68 -> 67. --------- Co-authored-by: onexbot-occ-writer[bot] <onexbot-occ-writer[bot]@users.noreply.github.com>
jonahgabriel
added a commit
that referenced
this pull request
Sep 27, 2026
) * feat(OMN-18901): publish the DoD verify verdict in a shape the projection accepts Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): fresh head for the first non-draft CI run Onex-Lane: land-3959-1330 Onex-Session: 825bf9dc4dcf44d4ba2d44657d592eab * fix(OMN-18901): unroute the pure fold, let the fold decide a rehearsal, and require the run window - Contract: the pure fold is no longer a handler_routing entry. With no event_model it was dispatched on the verdict topic beside the writer and failed every dispatch (22 validation errors for the request model), so each stored verdict was also dead-lettered, replayed five times and quarantined on the .201 dev lane (2026-09-24T22:56Z). Even with the bare dict accepted, a reducer's returned model becomes a projection intent the auto-wired applier has no effect for (RuntimeHostError, probed in-container). The writer calls the fold in-process. - Rule 7a: the dry-run decision moves from the writer into the pure fold (row=None); the writer persists only what the fold hands it. - A declined rehearsal reports rows_refused_by_ordering_guard=1 beside rows_upserted=0, so the runtime logs it as expected (OMN-18992) instead of the 'wrote zero rows' ERROR, and its apply counter does not score it as a silent write-path gap. Pinned against real Postgres. - ModelDodVerifyState.started_at/completed_at are required: no defaulted, construction-time window the projection would store as history. - make_completed_event drops its caller-supplied started_at: one source for the window. - The dod_verify contract's dry_run description says what a rehearsal does. Onex-Lane: dod-verdict-publisher-2779 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): carry omnimarket#2874's v0.4.217 dev-open bump unchanged, so this branch passes the release-identity gate; #2874 lands first Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * fix(OMN-18901): the routing check counts a canonical fold the node's routed writer constructs as reachable The rule-7a projection split leaves the pure fold unrouted and runs it inside the writer. The missing-routing check read that as an undispatchable handler and flagged node_projection_dod_verdict. A routed module in the node's own package that imports AND calls the canonical class now proves reachability; an import alone, or a writer in another node, still fires. Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * feat(OMN-19514): a DoD verdict names the delegation run it judged The verifier's correlation_id identifies the verification run, not the delegated attempt whose work it judged, so no verdict row could be joined to a delegation_events row. Stacked on OMN-18901 (omnimarket#2779), which makes the verdict reach the projection at all. - ModelDodVerifyStartCommand accepts delegation_correlation_id (optional, omitted from serialisation when unset); the contract declares the input - the state the runtime publishes, and its completed-event twin, carry it - the projection wire, the pure fold and the row carry it; the writer upserts it as bind $20 - migration 0002 adds nullable dod_verify_runs.delegation_correlation_id with a partial index for the join from delegation_events - the two sibling real-Postgres tests apply 0002 too, and the bind-name list in the OMN-18900 unit test names the new bind Onex-Lane: dod-loop-join Onex-Session: 1662aee51b0e49eb829a6db24bac70b8 * test(OMN-19514): the stand-in join keeps the lab's TEXT correlation_id, and the migration names the cast Onex-Lane: dod-loop-join Onex-Session: 1662aee51b0e49eb829a6db24bac70b8 * fix(OMN-19514): regenerate the checked-in application relation inventory The branch had fallen behind dev, which had accumulated changes the inventory generator now derives differently. Regenerating picks up this PR's own node_dod_verify and node_projection_dod_verdict entries and the new delegation_correlation_id index, matching what scripts/generate_application_relation_inventory.py --check expects. Onex-Lane: dod-loop-join Onex-Session: 1662aee51b0e49eb829a6db24bac70b8 * chore(release): open dev for v0.4.234 [release-on-merge] Disarms the OMN-16344 release-identity gate that publishing v0.4.233 armed against dev. Triggered-by: https://github.com/OmniNode-ai/omnimarket/actions/runs/36265839055 --------- Co-authored-by: onexbot-occ-writer[bot] <onexbot-occ-writer[bot]@users.noreply.github.com>
jonahgabriel
added a commit
that referenced
this pull request
Sep 27, 2026
…DoD pass rate, on the deployed lane too (#2887) * feat(OMN-18901): publish the DoD verify verdict in a shape the projection accepts Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): fresh head for the first non-draft CI run Onex-Lane: land-3959-1330 Onex-Session: 825bf9dc4dcf44d4ba2d44657d592eab * fix(OMN-18901): unroute the pure fold, let the fold decide a rehearsal, and require the run window - Contract: the pure fold is no longer a handler_routing entry. With no event_model it was dispatched on the verdict topic beside the writer and failed every dispatch (22 validation errors for the request model), so each stored verdict was also dead-lettered, replayed five times and quarantined on the .201 dev lane (2026-09-24T22:56Z). Even with the bare dict accepted, a reducer's returned model becomes a projection intent the auto-wired applier has no effect for (RuntimeHostError, probed in-container). The writer calls the fold in-process. - Rule 7a: the dry-run decision moves from the writer into the pure fold (row=None); the writer persists only what the fold hands it. - A declined rehearsal reports rows_refused_by_ordering_guard=1 beside rows_upserted=0, so the runtime logs it as expected (OMN-18992) instead of the 'wrote zero rows' ERROR, and its apply counter does not score it as a silent write-path gap. Pinned against real Postgres. - ModelDodVerifyState.started_at/completed_at are required: no defaulted, construction-time window the projection would store as history. - make_completed_event drops its caller-supplied started_at: one source for the window. - The dod_verify contract's dry_run description says what a rehearsal does. Onex-Lane: dod-verdict-publisher-2779 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * chore(OMN-18901): carry omnimarket#2874's v0.4.217 dev-open bump unchanged, so this branch passes the release-identity gate; #2874 lands first Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * fix(OMN-18901): the routing check counts a canonical fold the node's routed writer constructs as reachable The rule-7a projection split leaves the pure fold unrouted and runs it inside the writer. The missing-routing check read that as an undispatchable handler and flagged node_projection_dod_verdict. A routed module in the node's own package that imports AND calls the canonical class now proves reachability; an import alone, or a writer in another node, still fires. Onex-Lane: jev-dod-producer-2 Onex-Session: e0ac582ced0a487f860f431365ab85f4 * feat(OMN-19514): a DoD verdict names the delegation run it judged The verifier's correlation_id identifies the verification run, not the delegated attempt whose work it judged, so no verdict row could be joined to a delegation_events row. Stacked on OMN-18901 (omnimarket#2779), which makes the verdict reach the projection at all. - ModelDodVerifyStartCommand accepts delegation_correlation_id (optional, omitted from serialisation when unset); the contract declares the input - the state the runtime publishes, and its completed-event twin, carry it - the projection wire, the pure fold and the row carry it; the writer upserts it as bind $20 - migration 0002 adds nullable dod_verify_runs.delegation_correlation_id with a partial index for the join from delegation_events - the two sibling real-Postgres tests apply 0002 too, and the bind-name list in the OMN-18900 unit test names the new bind Onex-Lane: dod-loop-join Onex-Session: 1662aee51b0e49eb829a6db24bac70b8 * test(OMN-19514): the stand-in join keeps the lab's TEXT correlation_id, and the migration names the cast Onex-Lane: dod-loop-join Onex-Session: 1662aee51b0e49eb829a6db24bac70b8 * feat(OMN-19528): delegation routing reads the per-(task type, model) DoD pass rate, on the deployed lane too The OMN-14001 overlay seam is the one place a stored outcome steers a delegation routing decision. Its source, context_roi_scores, holds no rows on the lab, and only the bus-less local port read it; the deployed-lane routing consumer passed no overlay at all. routing/dod_overlay.py feeds the same seam from the join OMN-19514 made possible: delegation_events (task type, tier, model) joined to omninode_internal.dod_verify_runs on delegation_correlation_id. - build_dod_overlay: a pure fold. A sample is a run whose verdict decided it (verified or failed); a pass is outcome done; the latest decided verdict per run wins; the OMN-14019 recency window applies per tier; a tier is suppressed at or above the minimum sample with a pooled rate below the floor. Per-(tier, model) rates ride beside the tier signals. - PostgresDodOutcomeReader: one transaction per read, app.tenant_id set and tenant_id filtered explicitly. Missing tenant under enforcement raises before any SQL; an unmapped tenant or any read failure returns None, so routing stays static. - HandlerRoutingIntent (deployed lane) threads it into delta() and logs one line citing each (tier, model) rate; the local port selector wires the same read. No DSN, no reader: decisions are byte-identical to before. - roi_overlay.apply_recency_window is public so both reads share one definition of recent. Onex-Lane: dod-loop-route Onex-Session: 6d9b43ae347b42dc801f7efc8fb638cb * fix(OMN-19528): read the two tables under the two roles that may read them, and join in Python On the .201 dev lane no single runtime principal can read both sides of the join. The projection DSN's role (OMNIDASH_ANALYTICS_DB_URL) reads public.delegation_events and has no USAGE on omninode_internal; the internal DSN's role (OMNINODE_INTERNAL_DB_URL, omninode_runtime) reads omninode_internal.dod_verify_runs (migration 0001) and not delegation_events. A SQL join would have failed open to static routing on every request. The reader now makes two reads, each under the least privilege that can make it: the verdicts that name a delegation run (internal DSN), then only those runs' delegation rows for one task type and one tenant (projection DSN, tenant transaction unchanged). join_delegations_to_verdicts is the pure join, keyed on the lower-cased run id so the lab's TEXT correlation_id meets the UUID column. The live reader needs both DSNs; either missing means no reader and static routing. Onex-Lane: dod-loop-route Onex-Session: 6d9b43ae347b42dc801f7efc8fb638cb * feat(OMN-19528): the DoD routing line counts joined verdicts that decided nothing On the .201 dev lane every joined verdict was skipped (the deployed verifier found no DoD contract), so the line read "no decided DoD verdicts" and gave no sign the read had found anything. It now names how many verdicts joined to the task type and how many of them decided nothing. Onex-Lane: dod-loop-route Onex-Session: 6d9b43ae347b42dc801f7efc8fb638cb --------- Co-authored-by: onexbot-occ-writer[bot] <onexbot-occ-writer[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Automated post-release disarm step (OMN-18010, porting OMN-13912). Publishing
v0.4.216left dev's[project].versionequal to the highest published tag, which ARMS the OMN-16344 release-identity gate (scripts/check_release_identity.py) against every subsequent dev PR that touchessrc/**.This PR bumps
[project].versionto0.4.217and re-locksuv.lock, so the gate is disarmed by the same flow that armed it rather than by whichever unrelated PR trips it first.The title carries the release-on-merge marker on purpose: this commit touches
pyproject.toml, so without the marker its own merge would re-enter the release workflow and publish an empty version.Ticket
OMN-18010 — release on merge for every publishing repo.
Triggered by
https://github.com/OmniNode-ai/omnimarket/actions/runs/36050759868
Test plan