Skip to content

Provider-neutral service and portable container deployment - #114

Merged
dskvr merged 32 commits into
mainfrom
fix/provider-neutral-deployment
Nov 10, 2026
Merged

dskvr merged 32 commits into
mainfrom
fix/provider-neutral-deployment

Conversation

@dskvr

@dskvr dskvr commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

The normal entrypoint now boots a provider-neutral CVM service from mounted configuration and secrets. The repository supplies portable container definitions, configuration examples, migrations and verification tools. Host inventories and deployment automation belong in an operator-owned repository.

Changes

  • Reuses existing funding, metering, continuation, worker, verification, preview and publication services.
  • Adds explicit canonical migrations and immutable separation of test and real-money databases.
  • Supports receive-only Lightning funding, allowlisted Cashu mints and metered OpenAI Responses usage.
  • Provides a single-host Compose stack with PostgreSQL, relay, gVisor build engine and optional TLS ingress, plus backup/isolated restore tooling.
  • Packages the required runtime assets, preview dependencies, Docker CLI and pinned Chromium. Startup diagnostics preserve the missing-config error while redacting arbitrary exception text; health checks use /health.
  • Retains generated compiler failures and sends the exact failed source plus bounded diagnostic back for one separately metered correction within the signed maximum. A signed revision can explicitly approve recovery when more budget is required; uncertain provider calls are never retried.
  • Uses the pinned Paja host composition for live OUTBOX and browser-backed preview domains, with reachable host controls and artifact-scoped state. A failed revision refresh preserves the existing iframe.
  • Gives both API and OAuth generation actual callable napplet skill resources and read-only Nostrbook MCP tools through a bounded conversation. Confirmed turns retain immutable usage evidence; cumulative limits and uncertainty fences cover the entire operation.
  • Adds pinned, licensed GSAP/Three.js guidance and frozen offline worker dependencies, with a real sandboxed visual test. OAuth's new profile explicitly includes the output allowance for tool continuations in its displayed approval maximum.
  • Documents portable installation and configuration without private repositories, machine names or operator commands. Machine-specific runtime overlays and live smoke tests are maintained outside this repository.

Validation
The authoring update passes 81 focused tests (416 assertions), pinned TypeScript, four real PostgreSQL migration/evidence checks, four SQL proposal/receipt integration checks, real compiled Nostrbook documentation reads, and a fully offline Three.js/GSAP worker plus artifact/Chromium test. OAuth, interrupted-generation recovery and returning-project browser journeys pass with real relay, SQL, Docker worker and Paja components; model transport is deterministic in these tests. The application revision passes eleven hosted checks. The GUI rerun includes corrected legacy gross/net Cashu funding fixtures; all remaining browser cases also pass in an isolated Linux runtime. Hosted checks are running for the test update. These results do not establish real-money launch readiness.

Remaining launch gaps / review focus

  • Pricing refresh changes identifiers required by pending-action resume; retained pricing and recovery across refresh/interrupted calls need verification.
  • Admission currently has no finite slot limit. Bounded capacity and acceptance-to-isolation p95 require implementation and concurrent-load proof.
  • Each operator must configure encrypted off-host backup collection and verify scheduled restoration.
  • Real-money operation requires actual receive-only payment credentials, two real mints, public ingress and a fresh real-realm database, followed by a bounded verified flow.

dskvr and others added 25 commits November 1, 2026 10:04
…rations

Boot the normal entrypoint from a mounted config and secret files, using the
same funding, metering, worker, preview and publication classes as the working
service. Migrations become an explicit command with an immutable realm marker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…undary probe

Run untrusted builds and publication screenshots under runsc inside a private
engine. The probe checks the real runtime: identity, capabilities, read-only
root, denied network, and a complete conformance build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ails

A pending Lightning top-up now returns its BOLT11 request to the verified
requester, so a real wallet can pay it. Test realm gets a FakeWallet mint and
receive-only NWC wallet, operated outside the service.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and model pricing

Drive the real user flow over public origins with a user-held key. Snapshot
the database and storage into a volume the host backup collects, then restore
it into an unrouted instance and verify identity, rows, artifacts and reopen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ing funding in the UI

Document the deployment, backup, restore and rollback procedure and mark the
withdrawn Google runbooks historical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… validation paths

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The request guard compares encoded bytes to input tokens; 61 KB of guidance
exceeded the 48k ceiling, so every request was refused before dispatch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ertain

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ealm deterministic adapter

A 4xx refusal (for example insufficient_quota) left the action usage_unknown
with held funds. It now settles at zero charge; 5xx and transport failures
still reconcile before retry. The test realm may select a deterministic model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng cap

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…internal address

Other user relays must still resolve to public addresses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A private stack relay name failed user-relay validation outside the
per-relay error handling and aborted the whole announcement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lass and code

Add coverage for 30-day pending-action expiry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce CI

The restored relay could not traverse a 0700 data directory. Restores now fail
unless every account's ledger equals its settled projection. Add a service
workflow and update entrypoint invariants for the provider-neutral boot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A stale environment file made compose down fail silently, so later restores
reused containers bound to a deleted data directory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…idence

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… checks

Paid gpt-5-mini sources were rejected at verify for unused catch bindings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dskvr
dskvr marked this pull request as ready for review November 9, 2026 12:44
@dskvr dskvr changed the title Provider-neutral service composition and Ansible deployment Provider-neutral service and portable container deployment Nov 9, 2026
@dskvr
dskvr force-pushed the fix/provider-neutral-deployment branch from af4a409 to f7a43c4 Compare November 9, 2026 14:09
@dskvr
dskvr force-pushed the fix/provider-neutral-deployment branch from f7a43c4 to e88cf2e Compare November 9, 2026 14:13
@dskvr
dskvr force-pushed the fix/provider-neutral-deployment branch from 2422a2a to d97dd7b Compare November 9, 2026 16:42
* feat: decouple payments into operator-owned credit adapters

* feat: include generic payment method selection

* fix: require either a credit target or legacy payment amount

* docs: record payment extraction and live rollout verification

* fix(ci): restore core coverage after payment adapter extraction

* fix(test): isolate registry fixtures from optional payment implementation

* fix(ci): verify public browser flows without private payment adapters

* fix(ci): use deterministic preview origins and budget restored core proofs
@dskvr
dskvr merged commit e99fd98 into main Nov 10, 2026
13 checks passed
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