Skip to content

feat!: unify SDK and WASIX storage contracts - #148

Draft
f0rr0 wants to merge 4 commits into
f0rr0/wasix-sdk-clean-breakfrom
f0rr0/wasix-storage-contract
Draft

feat!: unify SDK and WASIX storage contracts#148
f0rr0 wants to merge 4 commits into
f0rr0/wasix-sdk-clean-breakfrom
f0rr0/wasix-storage-contract

Conversation

@f0rr0

@f0rr0 f0rr0 commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • establish one minimal managed-root descriptor contract across native SDKs and WASIX bindings
  • align native and WASIX physical backup/restore semantics around PostgreSQL backup mode and a strict same-family archive envelope
  • make query, error, lifecycle, configuration, extension, and storage terminology consistent across every public SDK surface
  • harden Swift and Kotlin PGDATA initialization with staged, validated, durable, no-overwrite publication
  • remove obsolete compatibility, profiling, runtime-profile, duplicated packaging, and unused dependency-license surfaces
  • update fixtures, generated API inventory, policy checks, package checks, examples, and maintainer/product documentation

Storage design

  • a managed root contains .oliphaunt.json plus PGDATA at the descriptor-selected relative path
  • the descriptor records only schema, engine family, PGDATA path, PostgreSQL major, and physical format
  • native-compatible SDKs share the native physical domain; both WASIX bindings share the WASIX archive contract
  • physical archives contain PGDATA plus the five-key backup manifest; restore consumes the manifest and creates the destination-owned root descriptor
  • restore accepts only new or empty destinations; there are no legacy adoption, replacement, or compatibility modes
  • ownership mechanisms remain binding-local; cross-binding same-root mutation and handoff are unsupported and no interoperability test machinery remains
  • native and WASIX roots are not specially rejected merely because another family created the descriptor
  • source fingerprints remain build-artifact provenance and never become storage identity

Public API clean break

  • all high-level execute/query paths use PostgreSQL extended protocol, including zero-parameter calls
  • native direct root ownership is enforced by the runtime boundary without exposing cross-binding lock APIs
  • TypeScript WASIX package exports its deliberate query, protocol, and storage entrypoints
  • standard PostgreSQL tools remain standard: server users use pg_basebackup; no custom server backup wrapper was added
  • unsupported future features remain explicit policy items rather than speculative flags or placeholder APIs

Qualification

  • full repository release-contract suite
  • native C host smoke and adversarial archive/restore cases
  • Rust native SDK package and process-boundary smoke, including 100 package-lane unit tests
  • Rust WASIX release check, package check, 96 unit tests, and 3 doctests
  • TypeScript WASIX package check and 168 tests
  • JavaScript, Kotlin/Android, and React Native package checks
  • all 39 WASIX extension release artifacts
  • SDK manifest/parity/header/API-inventory contracts and documentation generation
  • committed asset/source-spine verification, formatting, and broker dependency-license audit

Environment limitation

  • Swift executable qualification remains CI-only because Swift is not installed on this Linux host

Breaking change

This is intentionally a clean break. Removed APIs, compatibility paths, historical modes, and legacy storage formats are not retained.

Establish the clean-break managed-root and physical archive contracts across native SDKs and WASIX bindings. Remove obsolete compatibility, runtime-profile, instrumentation, and packaging surfaces while aligning public APIs, fixtures, qualification, and documentation.
@vercel

vercel Bot commented Aug 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
oliphaunt-docs Ready Ready Preview Aug 20, 2026 4:37pm

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