Replies: 1 comment
|
The RFC-only draft PR is now open: #440 It includes the proposed Azure reference-architecture PNG and its reproducible |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem
I want to run OmniGraph as the backend for an Azure-hosted company knowledge
graph and be able to give enterprise customers a maintained, reproducible Azure
path. Today the documented remote backend is S3-compatible object storage. An
Azure operator can add another S3-compatible service or mount Azure Files, but
neither provides a native managed-identity-to-Blob deployment or proves that
both OmniGraph control objects and Lance datasets use the same Azure substrate.
Proposed supported boundary
az://<container>/<prefix>. The storageaccount and credentials stay in the standard Azure environment contract.
object_storeandLance; do not add a second storage engine, manifest format, or Azure SDK.
conditional backend omits an ETag.
deployment scopes
Storage Blob Data Contributorto one container andAcrPullto one registry; Storage shared keys and ACR admin/anonymous pullare disabled.
but do not treat that target as a lock. Azure explicitly permits temporary
extra replicas during platform maintenance. The app, bootstrap job, retries,
and every supplied writer path therefore enter through one PID-1 wrapper that
must acquire a canonical, infinite Azure Blob lease before it starts an
OmniGraph child.
fencing token. Every wrapper uses a unique random proposed lease ID; a lost
acquire response must be positively resolved with that exact ID before any
child starts. Graceful shutdown drains the complete child process group
before exact-ID release; a hard kill or unresolved response leaves the lease
stuck and the replacement unready. The deployment never auto-breaks it.
Explicit recovery freezes admissions, closes ingress, enumerates every
revision and execution until process count is stably zero, and hard-fences an
old runtime whose death cannot be proved before it breaks the lease.
private-endpoint/VNet variants, sovereign clouds, and
abfs://aliases out ofthe initial support claim.
Evidence from a working prototype
I prepared the RFC and implementation locally, but I am intentionally not
opening an implementation PR before this design is accepted.
The prototype currently has:
az://graph and config-free bare-az://cluster HTTP tests;layout for the state ledger, graph manifest, and Lance data beneath one
cluster root, plus the checked-in branch-protection update that makes that
context required once maintainers apply the policy;
Analytics, a Container Apps environment, a manual bootstrap job, and a
single-replica-target HTTPS app;
authentication, topology, physical Blob objects, retained-log credential
hygiene, and persistence across a replacement replica;
msftse/azure-architecture-proposalprompt, with the lease-admitted childboundary shown separately from the one-replica sizing target.
On 2026-08-04 I ran the storage and managed-identity prototype from upstream base
c62829acc6f5414356304d1c240d95fad38b8984in a disposable Azure public-cloudresource group. ACR produced the immutable image digest
sha256:90fc54958d5278dca571b9106a1e795a5511add1bf24a257365011838d2837cb.The managed-identity bootstrap succeeded, authenticated mutation/query passed,
Azure replaced the serving replica, and the replacement returned the value
written before restart from Blob Storage. A raw managed-identity Blob listing
found the cluster ledger,
__manifest/_versions/*.manifest, and Lancedata/*.lanceobjects. The final RBAC scope was the single container; retainedbootstrap/app logs contained neither the exact bearer token nor credential
patterns. Azure then confirmed deletion of the disposable resource group. The
repository-ready validation record is redacted and contains no tenant,
subscription, resource name, URL, token, or proof-row value.
That run proves the native Blob path, managed identity, authorization, physical
layout, and restart persistence. It does not by itself certify the mutable
Container Apps topology: final review caught that
maxReplicas = 1is only atarget and platform maintenance may pre-warm an overlapping replica. The RFC
now requires the infinite-lease admission wrapper above, plus a second
adversarial live run covering simultaneous app/job contenders, graceful drain,
hard-kill stuck-lease behavior, ambiguous responses, and one-child interval
evidence before an implementation PR can claim supported mutable hosting.
Questions for maintainers
az://<container>/<prefix>fit OmniGraph's URI and storage model, withthe account deliberately supplied through environment configuration?
Container Apps reference to externally preserve OmniGraph's current
one-live-writer-process boundary, with replica count treated only as sizing?
before I open the public RFC PR?
I have drafted RFC 0029, “Native Azure Blob storage,” and will link this
Discussion from it. After the RFC is merged (accepted), I will open the separate
implementation PR with the code, deployment package, tests, documentation, and
redacted live proof.
All reactions