Skip to content

chore(OMN-16831): bump omnibase_core 0.46.14 -> 0.47.0 and cut the release the fleet re-pin is gated on - #1615

Merged
github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16831-release-0-47-0
Aug 29, 2026
Merged

github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16831-release-0-47-0

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Aug 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Cuts v0.47.0 — the omnibase_core release that OMN-16831 item 2 (runtime tenant stamping) is explicitly gated on. Both omnibase_infra#2976 and omnimarket#2199 record the precondition as "omnibase_core releases + fleet re-pins". Ten PRs have merged to dev since v0.46.13 and none of them is on PyPI, so no downstream repo can bind against any of them today. omniui Phase 1A binds against the Phase C models and needs a published version for the same reason.

Why MINOR (0.47.0), not the 0.46.14 currently in pyproject

CHANGELOG.md states this repo's convention twice, in its own words:

  • v0.45.0 — "Minor bump per pre-1.0 semver convention for a breaking public-API deletion."
  • v0.46.0 — "Minor bump per pre-1.0 semver convention for breaking surface relocations..."

The delta contains exactly such a deletion. #1612 removed status_colors from ModelWidgetConfigStatusGrid — a model published since #363, carrying ConfigDict(extra="forbid"). Any caller still passing status_colors= now raises ValidationError. It is replaced by severity_roles: tuple[ModelSeverityRole, ...], which names theme tokens instead of carrying hex values.

pyproject sat at 0.46.14 only because an unrelated fix PR (d89b1076) bumped it inline. 0.46.14 was never tagged and never published, so nothing is skipped by going straight to 0.47.0. Shipping this delta as a patch would publish a breaking public-API deletion under a version that five downstream repos' <0.47.0 caps were written to accept — the precise failure those caps exist to prevent.

Delta since v0.46.13 (10 PRs, 43 src files, +2638 / -226)

commit PR what
872beef0 #1613 add omninode_infra to the dependency-cascade downstream matrix
c8050400 #1612 semantic severity for StatusGrid — breaking, see above
ae6a19d6 #1611 transport envelope carries the tenant dimension (OPTIONAL field, model stays extra="forbid" — additive)
32cf8fcd #1610 one versioned widget envelope
f3cb4d72 #1608 theme instances + theme catalog
f8eef25e #1609 .onex_state disposable-by-default with two named durable subtrees
8c41a3ca #1607 a freshly scaffolded ONEX project passes onex validate
d89b1076 #1604 unified ~/.onex/config.yaml schema across all CLI writers
bb48dffc #1605 pass commits into the receipt-gate workflow
c454c68a #1606 retry Enable Auto-Merge with --squash when no queue is active

All ten merged with required checks green. Zero open PRs on omnibase_core at the time this was cut — no concurrent release work.

Verification

  • Release-identity gate (OMN-13411) passes both modes: --base origin/dev → OK: no packaged src/** change in this diff — version bump not required (pyproject 0.47.0, latest published 0.46.13).; strict → OK: version 0.47.0 is ahead of latest published 0.46.13.
  • Fast-forward precondition checked: git merge-base --is-ancestor origin/main origin/dev → TRUE, so release.yml's Sync-main step (OMN-16289) can actually fast-forward. origin/main is currently 2a5ac713 == the v0.46.13 tag commit, so the release-synced-main policy is holding mechanically.
  • No tag protection / no protected environment on this repo — gh api repos/OmniNode-ai/omnibase_core/tags/protection → 404; the only ruleset is Merge Queue (id 13269695, enforcement=disabled). The release needs no operator approval step.
  • Governed pre-push selector: full escalated suite green — 44298 passed, 53 skipped, 3 xpassed, 155 warnings in 6643.49s (1:50:43), then [prepush-smart-tests] impacted tests passed; allowing push. The selector escalated to the whole non-integration tree because pyproject.toml changed. No PREPUSH_FULL_SUITE / ENABLE_SMART_TESTS=off override was set and no escalation was bypassed.
  • uv.lock regenerated in the same commit (Updated omnibase-core v0.46.14 -> v0.47.0).
  • CHANGELOG entry follows the existing file's convention (PR numbers, no ticket tokens — the Doc-Content Scan Gate, OMN-13572, rejects OMN-<digits> in docs on this public repo).

Known cascade consequence — stated up front, not discovered later

dependency-cascade.yml bumps six downstream repos. Only omnibase_infra pins core exactly (omnibase-core==0.46.13), which the cascade's "Update pyproject.toml pin" step rewrites via its ==X.Y.Z regex. The other five cap core below this release:

repo current constraint cascade leg on 0.47.0
omnibase_infra ==0.46.13 moves — exact pin is rewritten
omniintelligence >=0.46.3,<0.47.0 SKIP — cap excludes 0.47.0
omnimemory >=0.46.13,<0.47.0 SKIP
omniclaude >=0.46.5,<0.47.0 SKIP
onex_change_control >=0.46.8,<0.47.0 SKIP
omninode_infra >=0.46.13,<0.47.0 SKIP

uv lock --upgrade-package cannot cross a range cap, so those five legs will resolve to the same version they already have, see no diff, and report "already on latest" — a false statement of the same class OMN-15604 / OMN-16286 hardened against for [tool.uv.sources] git overrides. The existing guard (check_dep_provenance.py --check-movable) only detects the git-override channel, not a range cap. That gap is real and is being filed separately; it is not introduced by this PR.

The caps are safe to widen: no Python consumer in the fleet references status_colors or ModelWidgetConfigStatusGrid (grep across omnibase_infra, omniintelligence, omnimemory, omniclaude, onex_change_control, omninode_infra, omnimarket → zero hits). The only fleet reference is omnidash's generated TypeScript types, which regenerate from core rather than resolving a Python pin. Cap-widening + re-pin PRs follow this release, per repo.

Test plan

  • Release-identity gate passes (both modes)
  • main is an ancestor of dev (post-release FF can succeed)
  • Full escalated local suite green (44298 passed)
  • uv.lock in sync with the bumped pyproject.toml
  • gh pr checks green in CI (confirmed post-open)

After this merges

Push lightweight tag v0.47.0 at the merge commit (this repo's tags are lightweight commit refs — v0.46.11/12/13 all are; auto-tag-on-merge.yml fires only on a release: / chore: release / chore(release) title prefix or a release label, which no recent release used). release.yml then builds, publishes to PyPI, cuts the GitHub Release, fast-forwards main, and fires the dependency cascade — including the omninode_infra leg added by #1613, whose first live exercise this will be.

Evidence-Ticket: OMN-16831
Evidence-Source: OCC#7534

…lease the fleet re-pin is gated on

OMN-16831 item 2 (runtime tenant stamping) is gated on "omnibase_core
releases + fleet re-pins" -- recorded in omnibase_infra#2976 and
omnimarket#2199. Ten PRs have merged to dev since v0.46.13 and none of
them is on PyPI, so no downstream repo can bind against any of them.

Minor, not patch: the delta contains a breaking public-API deletion.
#1612 (OMN-16884) removed `status_colors` from
`ModelWidgetConfigStatusGrid`, a model published since #363 that carries
`extra="forbid"` -- any caller still passing `status_colors=` now raises.
CHANGELOG.md's own convention names this case twice ("Minor bump per
pre-1.0 semver convention for a breaking public-API deletion", v0.45.0;
"...for breaking surface relocations", v0.46.0). pyproject sat at 0.46.14
only because an unrelated fix PR (d89b107, OMN-16037) bumped it inline;
0.46.14 was never tagged or published, so nothing is skipped by going to
0.47.0.

Evidence-Ticket: OMN-16831
@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 7 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 132 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 945aadeb-50bf-4959-9233-0e69ec408733

📥 Commits

Reviewing files that changed from the base of the PR and between 872beef and c545278.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • CHANGELOG.md
  • pyproject.toml

Comment @coderabbitai help to get the list of available commands.

@github-actions
github-actions Bot enabled auto-merge (squash) August 29, 2026 09:01
jonahgabriel pushed a commit to OmniNode-ai/onex_change_control that referenced this pull request Aug 29, 2026
…#7534)

* evidence: OCC companion pass 1 for OmniNode-ai/omnibase_core#1615

* evidence: OCC companion self-bind for #7534

---------

Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai>
@github-actions
github-actions Bot merged commit 9b8b570 into dev Aug 29, 2026
308 of 337 checks passed
@github-actions
github-actions Bot deleted the jonah/omn-16831-release-0-47-0 branch August 29, 2026 09:43
@jonahgabriel

Copy link
Copy Markdown
Contributor Author

Correction to this PR's own description, and to the v0.47.0 CHANGELOG entry it landed.

This PR body and CHANGELOG.md both describe core#1611 (ae6a19d6, OMN-16831) as:

feat the transport envelope carries the tenant dimension — an OPTIONAL tenant field on ModelEventEnvelope (additive; the model stays extra="forbid")

That is wrong on the load-bearing half. The tenant_id field is additive. But extra was previously undeclared on ModelEventEnvelope — Pydantic's "ignore" default applied — and ae6a19d6 added model_config = ConfigDict(extra="forbid"). The model did not "stay" extra="forbid"; it became it. That is a breaking change to a published model, and I classified it as additive when deciding the version.

The version decision is unaffected and, if anything, better supported: 0.47.0 carries two breaking changes, not one. But the release notes understate the breaking surface, so anyone reading them to decide whether to upgrade is reading an incomplete list.

Proven consequence, not a hypothetical. The cascade bump PR omnibase_infra#3000 fails with 138 failed, 24532 passed against 0.47.0, every classified failure being extra_forbidden on ModelEventEnvelope.source — from 11 production call sites in omnibase_infra including runtime/service_kernel.py. Filed as OMN-16927 (Urgent). Not forced.

The correct v0.47.0 breaking-changes list is:

  1. ModelWidgetConfigStatusGrid.status_colors removed (feat(OMN-16884): semantic severity for StatusGrid — remove hex defaults, resolve colour through the theme #1612) — as described.
  2. ModelEventEnvelope gained extra="forbid" (feat(OMN-16831): the transport envelope carries the tenant dimension #1611) — omitted from the notes. Any producer passing an undeclared kwarg now raises instead of having it silently dropped. source is the live case.

A follow-up PR correcting the CHANGELOG.md v0.47.0 entry is the fix; the published v0.47.0 tag and GitHub Release notes cannot be rewritten, so this comment is the durable correction record against the merged PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant