Repository navigation
feat(OMN-17985): boot the seven projection-writer profiles core 0.47.5 registered - #3253
Conversation
…5 registered
omnibase_core 0.47.5 admits projection-writer-{delegation,hook-ledger,
live-events,registration,savings,tenant-credentials,tenant-registry} into
REGISTERED_RUNTIME_PROFILES and CONSUMER_ATTACHED_RUNTIME_PROFILES. This repo
owns the behaviour half, and two guards make the pairing mandatory:
- test_profiles_match_core_registry asserts frozenset(_PROFILES) equals the
core registry exactly.
- test_consumer_attached_profiles_actually_load requires every consumer-attached
name to resolve through load_runtime_profile.
Since #3238 made that function REFUSE an unknown name, a name core blesses that
this dict lacks is now a hard boot failure rather than a silent fallback to
"default". RED proves it: bumping the core pin to 0.47.5 with _PROFILES
unchanged failed both guards, the second with ProtocolConfigurationError on
'projection-writer-live-events' -- the drift the parity guard exists to catch,
now loud instead of silent.
prefetch_policy stays "disabled" on all seven, like every other role-based
profile. No lane's behaviour changes: these names are already the deployed
RUNTIME_PROFILE values on onex-dev, and the processes carrying them are
standalone BaseProjectionRunner runners that never read the variable.
Every commit that moves pyproject.toml or uv.lock rebinds these, per the same companion edit #3242 made for the 0.47.3 -> 0.47.4 move: the seam fixture that freezes the released core version, the version_compatibility min_version floor, and the runner image identity/shared-env digests (regenerated with scripts/ci/runner_image_identity.py --mode generate, then verified). The governed pre-push caught the first two as real reds on h201.2; the third was found by running the verifier rather than waiting for CI to say so.
There was a problem hiding this comment.
Hostile Reviewer — adversarial findings (OMN-17492)
Models succeeded: glm-review
Models failed: codex
New finding threads: 5
Deduped (already posted on this PR): 0
Nit-level findings suppressed: 0
The model is the FINDER, never the gate: merge is gated only by the
deterministic Hostile Review Thread Gate, which blocks while
hostile-reviewer threads are unresolved. Resolve each thread after
addressing (or rejecting, with a reply) its finding.
Findings demoted from threads (anchor rejected)
-
[MAJOR] hostile-reviewer (glm-review)
Seam fixture version bumped without recording new 0.47.5 surface | The fixture's stated purpose is to fail loudly on the exact symbols and field types consumed from core, with an update procedure of 'bump core, re-run the seam test, and record the new surface'. The diff changes core_version to 0.47.5 but the modules block is byte-identical. Core 0.47.4 was described as a pre-release pulling merged PRs #1439 and #1440; a released 0.47.5 may diverge from that snapshot, yet no re-derivation of the expected sym
Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MAJOR] hostile-reviewer (glm-review)
Min-version bump in fallback matrix breaks running 0.47.4 deployments on restart | _FALLBACK_MATRIX now enforces min_version 0.47.5. Any environment still running omnibase-core 0.47.4 (e.g., a pod using a stale cached image during a rolling deploy, since the runner image lock is only updated in the same merge) will fail the compatibility gate on next process start. The diff updates the pin everywhere atomically but provides no transition window or explicit allowlist for the outgoing version, converting a ro
Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MINOR] hostile-reviewer (glm-review)
Seven near-identical profile literals instead of a factory | The seven projection-writer profiles differ only in name. The comment explains why they must exist locally, but the repetition is unnecessary and each future profile addition requires seven lines of boilerplate plus exact-match parity. A comprehension generating them from a name tuple would be equivalent under the existing set-equality tests and reduce the chance of a copy-paste typo in name versus dict key, which current tests may not distinguish
Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MINOR] hostile-reviewer (glm-review)
Comment asserts ownership claim, no test enforces it | The comment states the profile names 'settle' ownership of the seven writers and that previously contracts were double-claimed by shared runtimes. The diff adds no test that a shared runtime profile (effects, main) fails to load if it attempts to attach these writers, nor that KAFKA_CONSUMER_GROUP values are distinct. The parity tests cited only verify name-set equality and loadability; the actual ownership invariant is documented prose, not an enforced
Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MINOR] hostile-reviewer (glm-review)
Runner image lock digests updated without provenance | identity_digest and shared_env_digest change alongside the omnibase-core pin, which is expected, but the diff contains no evidence the image was rebuilt from the new uv.lock rather than hand-edited. If the digests were computed against a stale lock or a different base, the runner image and the Python environment silently diverge; the lock file gives no way to verify. | Evidence: - "identity_digest": "b897b566327774f10e9f0c7208c49e2f",
- "identity_dige
Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492).
|
| Surface | Meaning | Blocks merge? |
|---|---|---|
| Review threads | Per-finding, posted by the reviewer | No (informational) |
Hostile Review Thread Gate |
Deterministic: unresolved hostile-reviewer threads exist | Fails until resolved (not yet a required context) |
degraded verdict |
Fewer than 2 models succeeded (infra) | No |
Powered by omniintelligence.review_pairing.cli_review — multi-model adversarial review: qwen3-review, qwen3-review-b, glm-review (OMN-8468/OMN-8524/OMN-17492)
#8438) * evidence: OCC companion pass 1 for OmniNode-ai/omnibase_infra#3253 * evidence: OCC companion self-bind for #8438 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: jonahgabriel <jonah@omninode.ai>
OMN-17985 (AC2, behaviour half) — boot the seven profiles core 0.47.5 registered
omnibase_core0.47.5 (#1656, published to PyPI) admitsprojection-writer-{delegation,hook-ledger,live-events,registration,savings,tenant-credentials,tenant-registry}intoREGISTERED_RUNTIME_PROFILESandCONSUMER_ATTACHED_RUNTIME_PROFILES. Core owns the names; this repo owns the behaviour. Two guards here make the pairing mandatory rather than cosmetic:test_profiles_match_core_registryassertsfrozenset(_PROFILES) == REGISTERED_RUNTIME_PROFILES— exact set equality, both directions.test_consumer_attached_profiles_actually_loadrequires every consumer-attached name to resolve throughload_runtime_profile.Why this is now a hard failure rather than a silent one
#3238madeload_runtime_profilerefuse an unknown name. So a name core blesses that this dict lacks is no longer a warning-plus-fallback-to-default— it is a boot failure. The RED run demonstrates exactly that: bumping the core pin to0.47.5with_PROFILESunchanged failed both guards, the second withwhich is precisely the core/infra drift the parity guard was written for, finally loud instead of silent.
prefetch_policystays"disabled"on all seven, like every other role-based profile.No lane's behaviour changes
These names are already the deployed
RUNTIME_PROFILEvalues ononex-dev, and the processes carrying them are standaloneBaseProjectionRunnerrunners that never read the variable. Verified live after this change was authored: probe run34038648216shows all seven1/1Ready with broker-issued partition assignments,public.live_eventsat 293,555 rows and growing.Companion surfaces rebound in the second commit
Every commit that moves
pyproject.tomloruv.lockrebinds three mirrors of the core pin.#3242made the identical companion edit for the0.47.3 → 0.47.4move:tests/fixtures/seams/core_release/0.46.11_expected_symbols.json— freezes the released core version.src/omnibase_infra/runtime/version_compatibility.py—min_versionfloor.docker/runners/runner-image.lock.json—identity_digest+shared_env_digest, regenerated withscripts/ci/runner_image_identity.py --mode generateand then re-verified.The first two were caught as genuine reds by the governed pre-push full-suite escalation on h201.2 (2 failed / 26,733 passed) and are fixed here rather than waived. The third was found by running the verifier rather than waiting for CI to report it.
Verification
uv run pytest tests/unit/runtime/test_seam_released_core_pin.py tests/unit/runtime/test_fallback_matrix_sync.py tests/unit/runtime/test_runtime_profile.py tests/unit/runtime/test_runtime_profile_fail_closed.py=> 60 passed.uv run pytest tests/ci/test_lane_projection_writer_coverage_omn17562.py tests/integration/test_writer_owned_projection_wiring_omn17519.py testsets/unit/runtime/test_kernel.py=> 71 passed, 3 skipped.uv run python scripts/ci/runner_image_identity.py --mode verify=>runner image identity verified: v7 dd687c47e140a3a8680114ad3fba9103.ruff format/ruff check/mypy --strict=> clean.pre-commiton the changed paths => all pass.0.38.20is already the version ondevand0.38.19is the latest published, so this rides the existing unreleased bump; no further version move is needed.DoD evidence: OMN-17985, acceptance criterion 2 (behaviour half) and criterion 4 (red-then-green).
Evidence-Ticket: OMN-17985
Evidence-Source: OCC#8438