Skip to content

fix(api): publish complete ontology promotion atomically - #1236

Merged
DecisionNerd merged 2 commits into
mainfrom
fix/1229-atomic-ontology-promotion
Sep 10, 2026
Merged

DecisionNerd merged 2 commits into
mainfrom
fix/1229-atomic-ontology-promotion

Conversation

@DecisionNerd

@DecisionNerd DecisionNerd commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Same-name ontology adoption could select CURRENT before reconciling graph labels, then fail its first query with unauthenticated ordinal authority. Stage labels, per-name relationship/property ownership and identity receipts in a private authenticated candidate; prepare readers before CURRENT and install that complete generation. Keep this promotion path separate from ordinary reopen and retain disjoint metadata-only payload reuse.

Use stable authored-operation identity for interrupted retries, recover from selected authority, and refuse stale-facade success or replacement ontologies that reinterpret existing numeric type IDs. Preserve full-width surrogates, active streams and shared permanent Parquet settings. No compatibility readers or migration machinery.

Validation:

  • Public Advisory/Strict construction → promotion → exact query → reopen → export/full verification → clean import → ordinary/composite mutation passes. Mixed fixtures cover 33/4,097 nodes, 129/4,097 edges, 2/4 routes and nullable typed properties; repeat adoption reencodes no Parquet.
  • Exact conflicting retries preserve GF_IDEMPOTENCY_CONFLICT; four direct retry regressions pass. Rust, Python and Node surface manifests plus the Bazel target map include the new coverage.
  • Before/after-CURRENT crash and returned-error cases, cancellation, conflict, stale retries, type-ID refusal, full-width identity/allocation and reader-preparation refusal pass.
  • 737 API unit tests pass. Storage: 1,086 pass, two existing ignores, one unchanged test hard-codes /tmp and fails filesystem admission on this host before its assertions. Required CI remains the merge gate.
  • Workspace Clippy, formatting, fast pre-push and gate-registry checks passed during validation; full local pre-push completed with the same hard-coded /tmp admission failure in storage coverage (1,085 passed, one failed, two existing ignores). The coverage run also passed 737 API unit tests and preceding integration suites.
  • Source-bound evidence and deterministic payload/control budgets are in ontology-promotion-1229.json and the permanent-storage assessment. This is a correctness cost, not an improvement claim against the incomplete failing baseline. Process RSS and sampled simultaneous allocation are explicitly distinct from hard bounds.

Initial CI failure census: Windows/macOS native checks and Rust quality passed. Policy/Bazel/Python failures came from missing new-surface registrations; Node exposed the conflicting-retry error code. Both causes are corrected together at the current head, with existing binding assertions preserved. Required Test Suite / CI Gate run 34486875612 passed at exact head c6436eef3619f5ce854e5b6701716c2d9e67191f, including authoritative Bazel, real lifecycle producers, both bindings, Windows/macOS durability and concurrency. Independent review found no remaining blockers; no unresolved review threads; merge state CLEAN. Local five-case Cargo/Bazel parity passes at c6436eef with the admitted native TMPDIR; the initial default-/tmp refusal is retained in the local diagnostic log.

Closes #1229

@coderabbitai

coderabbitai Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: edbcdcde-deac-46e6-8ddc-4d3f657c74fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions Bot added core Core source code changes documentation Improvements or additions to documentation labels Sep 10, 2026
@github-actions github-actions Bot added testing Test coverage and testing infrastructure tooling Developer tooling and automation labels Sep 10, 2026
@DecisionNerd
DecisionNerd marked this pull request as ready for review September 10, 2026 14:07
@DecisionNerd
DecisionNerd merged commit c481cc1 into main Sep 10, 2026
23 checks passed
@DecisionNerd
DecisionNerd deleted the fix/1229-atomic-ontology-promotion branch September 10, 2026 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core source code changes documentation Improvements or additions to documentation testing Test coverage and testing infrastructure tooling Developer tooling and automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(api): publish same-name ontology promotion atomically

1 participant