Skip to content

feat(storage): Phase 6 adapter foundation for Postgres and Azure Blob - #184

Draft
Yuge Zhang (ultmaster) wants to merge 6 commits into
microsoft:mainfrom
ultmaster:feat/multi-backend-storage-phase-6-foundation
Draft

Yuge Zhang (ultmaster) wants to merge 6 commits into
microsoft:mainfrom
ultmaster:feat/multi-backend-storage-phase-6-foundation

Conversation

@ultmaster

@ultmaster Yuge Zhang (ultmaster) commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Implements the Phase 6 storage foundation: shared SQLite/Postgres codecs, validation, identity allocation, and Task/Run rules; native Postgres structured repositories; Azure Blob storage; and async agent extension-document helpers. Each SQL backend retains its own migrations, queries, and transactions.

This is 1 of 2 stacked PRs. The application continues to select its existing Disk/SQLite profiles. The second PR, #185, migrates Agenetes persistence, enables all six backend pairings, and adds conversation/product coverage. Review and merge this foundation first; then retarget/rebase #185 onto main before merging it.

Includes its own pnpm test:storage-backends command and CI step using disposable PostgreSQL and Azurite containers. Coverage includes real transaction rollback, CAS across independent connections, Workspace isolation, restart, staged-upload failure, and same-key upload serialization. Azure uploads publish only after successful block commit.

Validation of this foundation independently:

  • pnpm run typecheck passed.
  • pnpm -r --if-present --no-bail run test passed, including 1,401 server tests.
  • pnpm test:storage-backends: 121 checks passed.
  • Lint passed with no errors; formatting passed. Existing skips/todos remain unchanged.

The upper PR uses an identical mirror of this head branch in microsoft/Huabu as its base so its diff contains only activation work. Both PR heads remain on the fork. Azure validation uses Azurite; multi-Server coordination and live-account validation remain outside this change.

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