Workflow-Heilung: Drift und Vorschläge
Ändert sich ein Portal und ein Block beginnt zu scheitern, misst Browserberg die Drift und schlägt eine Korrektur vor — ein Mensch übernimmt oder verwirft sie.
Zuletzt aktualisiert:
Drift wird gemessen, nicht geraten
Portale ändern sich unter funktionierenden Workflows: Ein Button heißt plötzlich anders, ein Formular bekommt einen Schritt, ein Selektor veraltet. Browserberg nennt das Drift und erfasst sie pro Block. Eine Drift ist eine Episode — Ergebnisse werden je Block und Iteration gepuffert und erst am Blockende verbucht, damit ein maxRetries des Autors ein einzelnes Problem nicht zu einem alarmierenden Wert vervielfacht.
GET /v1/workflows/:id/health liefert den Drift-Score samt Episoden: welcher Block, welche Runs, was sich geändert hat.
Offene Vorschläge auflisten
Voraussetzungen: api-key
BASE="https://browserberg.com"
AUTH="Authorization: Bearer $BROWSERBERG_API_KEY"
JSON="Content-Type: application/json"
WFID=$(curl -s -X POST "$BASE/v1/workflows" -H "$AUTH" -H "$JSON" -d '{
"title": "Healing walkthrough",
"blocks": [ { "blockType": "navigation", "label": "Open_page", "url": "https://example.com" } ]
}' | python3 -c 'import json,sys; print(json.load(sys.stdin)["workflow"]["workflowId"])')
# A fresh workflow has no drift and therefore no proposals -- the empty list
# IS the healthy state. Proposals appear when runs start diverging from the
# published definition, and a human adopts or rejects each one.
curl -s "$BASE/v1/heal-proposals?workflowId=$WFID" -H "$AUTH" | python3 -m json.tool
{
"proposals": []
}
Ein Vorschlag bleibt ein Vorschlag
Heilung editiert deinen Workflow nie hinter deinem Rücken. Ein Vorschlag trägt die baseVersion, gegen die er berechnet wurde, und einen Content-Hash der Änderung; du übernimmst ihn als neue Version oder verwirfst ihn — heute über die API, mit POST /v1/heal-proposals/:id/adopt oder /reject. Veröffentlichst du selbst eine neue Version, werden offene Vorschläge als veraltet markiert, weil sie einen Workflow beschreiben, den es so nicht mehr gibt.
Vorgeschlagen werden darf nur eine geschlossene Liste von Feldern auf einer geschlossenen Liste von Blocktypen — geschlossen auf beiden Achsen, denn auch ein login-Block hat eine url. Gegen einen code-Block gibt es nie einen Vorschlag: Ein Vorschlag, der Code umschreiben könnte, wäre ein Mechanismus, um beliebigen Code in deinen Account einzuschleusen.