Skip to content

RFC 0029: native Azure Blob storage - #440

Open
roy2392 wants to merge 4 commits into
ModernRelay:mainfrom
roy2392:codex/rfc-0029-azure-blob
Open

RFC 0029: native Azure Blob storage#440
roy2392 wants to merge 4 commits into
ModernRelay:mainfrom
roy2392:codex/rfc-0029-azure-blob

Conversation

@roy2392

@roy2392 roy2392 commented Aug 4, 2026

Copy link
Copy Markdown

Summary

Proposes RFC 0029 for native Azure Blob Storage support through canonical
az://<container>/<prefix> roots, the existing Lance + Apache Arrow
object_store seams, and managed identity.

The RFC also defines a reference Azure Container Apps deployment. Importantly,
it does not treat minReplicas = maxReplicas = 1 as a correctness lock:
Azure may temporarily pre-warm extra replicas. Instead, every supplied server
and bootstrap writer must pass through one fail-closed PID-1 admission path:
Tini forwards signals and subreaps descendants while its supervised wrapper
owns an infinite per-cluster Blob lease before an OmniGraph child can start.
This is explicitly scoped as a cooperative process-admission mutex, not
engine-level data fencing or multi-writer support.

Architecture

Proposed OmniGraph Azure reference architecture

The image was produced and visually reviewed with the
msftse/azure-architecture-proposal diagram workflow. Its exact
reproducible prompt
is committed beside the PNG. The workflow repository is not linked because it
is not publicly reachable to an unauthenticated upstream reviewer.

Why this PR is RFC-only

This follows OmniGraph's public-contribution sequence:

  1. originating Ideas Discussion #439;
  2. this public RFC-only PR;
  3. implementation in a separate PR only after the RFC is accepted.

The implementation prototype, deployment package, CI job, docs, and validation
record are intentionally excluded from this branch.

Prototype evidence and evidence boundary

A prototype based on upstream
c62829acc6f5414356304d1c240d95fad38b8984 has already passed:

  • Azure URI/storage, engine, cluster, and server tests against Azurite;
  • a raw Blob-layout assertion covering the cluster ledger, graph manifest, and
    Lance data below the same cluster root;
  • a disposable public-Azure run with a user-assigned managed identity,
    anonymous Blob access disabled, container-scoped Blob RBAC, immutable ACR
    image, authenticated mutation/query, restart persistence, physical Blob
    inspection, retained-log credential scanning, and confirmed resource-group
    cleanup.

That first live run proves the native storage and identity path. It does not
prove the newly specified lease-admitted mutable topology. The RFC therefore
requires a second adversarial live-Azure gate before an implementation PR may
claim support: competing app/job writers, unique lease IDs, lost responses,
graceful long-write drain, unexpected exit, hard-kill stuck-lease behavior,
one-child interval evidence, and explicit break-glass recovery.

Checks for this RFC branch

  • bash scripts/check-agents-md.sh — 74 links / 69 docs OK
  • git diff --check — clean
  • architecture PNG visually reviewed; reproducible prompt included
  • no implementation code, credentials, subscription/tenant IDs, live Azure
    resource names or endpoint URLs, tokens, or proof-row values included

Requested feedback

  1. Does the canonical az://<container>/<prefix> model fit OmniGraph's storage
    and URI contracts?
  2. Is the fail-closed infinite Blob lease wrapper an acceptable external
    enforcement of the existing one-live-writer-process support boundary for the
    first Container Apps reference?
  3. Which additional acceptance gates or Azure environments should be in scope
    before the separate implementation PR?

Greptile Summary

RFC 0029 proposes canonical Azure Blob roots, managed-identity authentication, and a Container Apps deployment that admits one writer through an infinite Blob lease.

  • Defines az://<container>/<prefix> URI and storage semantics.
  • Specifies Azure conditional-write, recovery, authentication, and compatibility requirements.
  • Adds an architecture image and its reproducible generation prompt.
  • Defines Azurite and adversarial live-Azure acceptance gates.

Confidence Score: 4/5

The RFC is not ready to merge because its mandatory single-writer admission mechanism still lacks an implementable lease client within the stated dependency constraints.

The wrapper must perform Azure Blob lease operations, but the RFC assigns storage access to abstractions that expose no lease API while continuing to exclude a new Azure SDK or otherwise naming an implementation owner.

Files Needing Attention: docs/rfcs/0029-azure-blob-storage.md

Important Files Changed

Filename Overview
docs/rfcs/0029-azure-blob-storage.md Defines native Azure storage and lease-admitted deployment semantics, but the previously reported missing lease-client ownership remains unresolved.
docs/rfcs/assets/0029-azure-reference-architecture.prompt.md Provides a reproducible prompt aligned with the RFC’s Azure topology and single-writer admission model.
docs/rfcs/assets/0029-azure-reference-architecture.png Adds the reference architecture image described by the RFC and source prompt.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    Clients[Clients] -->|HTTPS| Server[OmniGraph server]
    Job[Bootstrap job] --> Gate[PID-1 admission wrapper]
    Server --> Gate
    Gate -->|Acquire infinite lease| Lease[(Admission lease Blob)]
    Gate -->|Admitted child| Root[(Azure cluster root)]
    Identity[Managed identity] -.-> Lease
    Identity -.-> Root
Loading

Reviews (3): Last reviewed commit: "docs(rfc): specify PID 1 supervision" | Re-trigger Greptile

@roy2392
roy2392 marked this pull request as ready for review August 4, 2026 11:22

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 2 additional findings in Devin Review.

Open in Devin Review

Comment on lines +3 to +6
This is the reproducible source prompt for
`0029-azure-reference-architecture.png`. It follows the target-platform diagram
workflow from `msftse/azure-architecture-proposal` and is intentionally limited
to the first supported public-cloud topology in RFC 0029.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 New documentation cites a source that outside readers cannot open

The committed diagram note points readers to a workflow source that is not publicly reachable (msftse/azure-architecture-proposal at docs/rfcs/assets/0029-azure-reference-architecture.prompt.md:5), so an outside contributor cannot verify or reproduce the referenced procedure.
Impact: Readers outside the authoring organization hit a dead-end reference when trying to reproduce the architecture figure.

Documentation audience-neutrality rule in AGENTS.md

AGENTS.md maintenance rule 5 ("Keep docs audience-neutral") requires stable public identifiers over organization-specific labels, and says internal context should be translated into a durable public rationale before committing. The PR description itself acknowledges the workflow repository "is not publicly reachable to an unauthenticated upstream reviewer". Since the prompt text below it is already fully self-contained, the private-repo attribution can be dropped or rephrased as a neutral description of the method.

Suggested change
This is the reproducible source prompt for
`0029-azure-reference-architecture.png`. It follows the target-platform diagram
workflow from `msftse/azure-architecture-proposal` and is intentionally limited
to the first supported public-cloud topology in RFC 0029.
This is the reproducible source prompt for
`0029-azure-reference-architecture.png`. It follows a target-platform
architecture-diagram prompt workflow and is intentionally limited
to the first supported public-cloud topology in RFC 0029.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread docs/rfcs/0029-azure-blob-storage.md
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