Skip to content

start: auf „Convex functions ready“ warten, bevor Seed oder Token-Mint eine Funktion rufen - #3

Merged
n-hallberg merged 3 commits into
mainfrom
assurance-fleet
Sep 14, 2026
Merged

start: auf „Convex functions ready“ warten, bevor Seed oder Token-Mint eine Funktion rufen#3
n-hallberg merged 3 commits into
mainfrom
assurance-fleet

Conversation

@echo-ex-void

@echo-ex-void echo-ex-void commented Sep 6, 2026

Copy link
Copy Markdown

Gefunden beim Bau des ausgeführten Assurance-Nachweises (login-verified, amadeni/assurance#1): Auf einem frischen Checkout ohne .env.local startet dev-contract start eine anonyme lokale Convex-Instanz. Der Schritt convex-ready wartete bisher nur darauf, dass das Backend den Env-Snapshot beantwortet — zu dem Zeitpunkt bündelt und pusht convex dev aber noch. Der Seed lief dann gegen ein leeres Deployment:

[seed] convex run dev/seed:seedDevData
Could not find function for 'dev/seed:seedDevData'. Did you forget to run `npx convex dev`?
No functions found.

Dasselbe trifft jeden Consumer auf frischem Checkout, also auch mynds Dev-Container und jede CI.

Was

  • runStart wartet nach Backend und Provisionierung zusätzlich darauf, dass convex dev in diesem Start Convex functions ready ins Log geschrieben hat (Schritt convex-ready, Timeout convexReadyMs, Abbruch wenn convex stirbt). Ein schon laufendes convex dev zählt mit seinem ganzen Log — es hat längst gepusht.
  • processes.ts: logSize (Marke vor dem Start) und readLogSince (nur das, was danach kam) — damit ein altes Log keinen frischen Start beweist.
  • README: Readiness heißt Backend und gepushte Funktionen.

Geprüft

pnpm run ci grün (80 Tests). Neu: Reihenfolge Snapshot → Log-Wartezeit → Seed; ein nie landender Push ist ein convex-ready-Fehler mit Diagnose, nicht ein seed-Fehler, und Seed und Mint laufen dann nicht.

Nach dem Merge

pnpm release → 0.1.2. Der Assurance-Consumer-PR in eberswalder-zeitreise hebt dev-contract auf diese Version, damit login-verified im CI durchläuft.

RetriggerConfidence Score: 5/5

The PR appears safe to merge; no actionable correctness, security, or repository-rule issues remain.

Summary

  • Records a byte offset before starting a new Convex process while retaining the complete log for an already-running process.
  • Waits for Convex functions ready after backend provisioning and before seed or token-mint operations.
  • Reads appended log data using byte-safe buffer slicing.
  • Adds tests for readiness ordering, timeout behavior, missing logs, and multibyte log content.
  • Clarifies the readiness guarantee in the README.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Run start] --> B[Record Convex log byte offset]
    B --> C[Start or reuse convex dev]
    C --> D[Wait for backend snapshot]
    D --> E[Apply provisioning]
    E --> F[Read log from selected offset]
    F --> G{Convex functions ready?}
    G -- No --> H{Process alive and timeout remaining?}
    H -- Yes --> F
    H -- No --> I[Fail at convex-ready]
    G -- Yes --> J[Run seed]
    J --> K[Mint token]
    K --> L[Continue application startup]
Loading

Reviews (2) · Last reviewed commit: "Greptile Runde 1: Log-Marke ist ein Byte..."

…t eine Funktion rufen — auf frischen (anonymen) Deployments antwortet das Backend, während convex dev noch pusht
Comment thread src/processes.ts Outdated
@echo-ex-void

Copy link
Copy Markdown
Author

Greptile Runde 1 eingearbeitet: readLogSince schneidet den Puffer in Bytes, bevor es dekodiert (Test mit ✔ im Log).

@echo-ex-void

Copy link
Copy Markdown
Author

@greptile Bitte einmal neu reviewen: Branch auf main rebased; das Paket @amadeni/assurance liegt jetzt privat auf GitHub Packages (Publish mit GITHUB_TOKEN, Consumer lesen mit dem Org-Secret GH_PACKAGES_READ, lokal über gh auth token).

@n-hallberg
n-hallberg merged commit 4dbbe06 into main Sep 14, 2026
2 checks passed
@n-hallberg
n-hallberg deleted the assurance-fleet branch September 14, 2026 11:04
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.

2 participants