ClientsFlow Pipeline · Merged Whole-Journey EBO + Live Visual-QA Evidence
Merged EBO — spec ⟷ live test, side by side
One running document: each scenario opens into the signed oracle (left — what it should do) next to the live visual-QA feed (right — what it actually did, screenshot + interleaved model reasoning per step). UX-critique column dropped. Each scenario is a toggle.
▥ LAYOUT B — Two-pane cards · the expectation spec and the live test feed run alongside each other, step for step
Mockup preview. Showing the first 3 real scenarios (S1–S3, Studio↔Pipeline) with sample test evidence + one merge-conflict example. Once you pick a layout, every scenario from all 6 prior EBOs (55 deduped rows) gets filled in this shape.
PENDING_REVIEWrun-trust 0.62 · 2 of 3 scenarios verified LIVE · 1 pending re-shoot · 55 scenarios total when fully merged · trust is in the asserted invariants, not "the system works"
◀ Left pane = the oracle: You do · should see · element · underneath · must NOT · 🕓 touchpointRight pane = live feed ▶ : honesty tag (LIVE ✅ / RENDERED ⚠️ / BLOCKED ⛔) + verdict + screenshot + ① Gemini + ② Claude + error-arc
▸S1Enrichment guarantees a website URL; missing → red ❗ badgeguardrail / upstreamstudio-S1bnf-r3-S8duo2-S14LIVE ✅ PASS · trust 0.9
Who: System (lead enrichment) + Mátyás · When: A new lead is enriched; enrichment must save a website_url. Runs upstream of Studio and gates everything downstream.
⚠ Merge conflict — 3 source EBOs disagreed on the missing-URL signal
studio-S1Raises a red ❗ badge pinned top-right; it is the only thing that blocks the Studio auto-kick.
bnf-r3-S8Shows an amber ⚠️ "enrich pending" chip and silently retries enrichment 3× before flagging.
duo2-S14Fills legal/CRM fields on ingestion but is silent when no website is found (no card signal).
✔ Resolved (signed EBO wins): studio-S1 governs the card face (red ❗); bnf-r3 retry logic kept underneath; the duo2 silent path becomes the bug this scenario forbids.
📋 Expected behaviour — the oracle
Step 1
You doEnrichment runs on a new lead and finds + saves the prospect's website.
Should seeCard shows the website (favicon/domain) and NO red ❗ — readiness implicitly met.
ElementDomain "beridoor.hu" on the card meta row, optional 🌐 favicon.
Target: CRM Details panel of a zero-state ZZ lead. Reasoning: S1 asserts enrichment persists a URL before any booking, so I read the saved field in Details rather than the board.
① Gemini — 5-sentence pixel report
The Details panel shows a populated contact block with a "Weboldal" row reading a real domain. No red/amber badge on the card header. Legal-info fields below are filled. No empty-field placeholders. Confidence: high.
② Claude — verify against pixels
See: Weboldal row = "beridoor.hu", no warning badge — matches the happy branch. Verdict:PASS pixels ∧ state agree. Next: the no-URL branch.
Step 2LIVE ✅PASSGemini: OK · conf high21:18:41
frames/s1-02-noURL.png · 1280×800
① Gemini — 5-sentence pixel report
The board card carries a bright red ❗ ribbon top-right, clearly above the fold. The card greys slightly to draw the eye. Hover reveals the "add a URL" tooltip. No design chip present, confirming the Studio kick is held. Confidence: high.
② Claude — verify against pixels
See: red ❗ pinned top-right, unmissable; no Studio chip — matches studio-S1, not the duo2 silent path. Verdict:PASS the conflict resolution holds in pixels. Next: S3 (booking on a red-❗ deal).
frames/s2-01-chip.png · 1480×1000 · ZZ Studio Walk
🖱 Decision — where I clicked & why
Target: POST qa/book on the ZZ sentinel, then read the board card. Reasoning: booking is the trigger; drove the real endpoint (freebusy skipped via the QA hook) so auto-create fires on the genuine path.
② Claude — verify against pixels
See: one indigo "🎨 Dizájn készül" chip; DOM confirms studio_project_id set; no duplicate on re-POST. Verdict:PASS pixels ∧ state ∧ idempotency. Next: watch generation (likely RENDERED).
frames/s2-02-generating.png · RENDERED (not driven to completion)
① Gemini — 5-sentence pixel report
The chip reads "🎨 Dizájn készül" with a subtle shimmer suggesting work in progress. No completed-design affordance yet. The card otherwise looks healthy with no error state. Confidence: medium — shimmer present but completion not visible.
② Claude — verify against pixels
See: the "készül" chip + shimmer render, but the Lab spend / artifact production is back-end, not pixel-visible. Verdict:UNVERIFIED — RENDERED can't be GREEN without a Studio run-state assertion. Next: re-shoot at "ready" + assert run-state via API.
▸S3Booked on a red-❗ deal → NO auto-kick; saving a URL resumes the flowfailure / deferredstudio-S3LIVE ✅ PASS · after fix
Who: System + Mátyás · When: A red-❗ deal (no website) gets its sales call booked. The Studio kickoff must be held back, not silently skipped or fake-run.
📋 Expected behaviour — the oracle
Step 1
You doThe sales call is booked while the card still shows the red ❗.
Should seeNO Studio project, NO Lab kick; card prompts "Add meg a weboldalt a Studio dizájnhoz".
Element❗ stays + inline "Weboldal megadása" field in the card body.
You doMátyás pastes a valid website URL into the inline field and saves.
Should seeThe ❗ clears and the normal S2 flow resumes automatically: project created + Lab kicked.
ElementRed badge → indigo "🎨 Dizájn készül" chip.
Underneathwebsite_url saved; studio_deferred cleared; same create+kick as S2.
Must NOTRequire re-booking; the save alone must resume it.
🕓 TouchpointNEW · 🎨 "Studio projekt létrehozva" · "Weboldal megadva" · by operator.
🧪 Live test feed — what actually happened
Step 1LIVE ✅PASSGemini: OK21:26:33
frames/s3-01-deferred.png · 1280×800
② Claude — verify against pixels
Expected: no design chip; inline URL field; studio_deferred=true. See: red ❗ persists, inline "Weboldal megadása" field rendered, no "Dizájn készül" chip — the kick was suppressed. Verdict:PASS deferral held, no fake run. Next: paste a URL, confirm S2 resumes.
Step 2LIVE ✅PASS(after fix)21:28:12
frames/s3-02-resumed-retry2.png · 1280×800
② Claude — verify against pixels
Expected: ❗ clears, chip flips to "Dizájn készül", project created — without re-booking. See: after pasting the URL, the badge cleared and the indigo chip appeared; DOM confirms one new project bound to the deal. Verdict:PASS on retry 2 — resume now fires on save alone.
error-arc — full history kept
BUGRetry 1: pasting the URL cleared the ❗ but did NOT re-fire create+kick — operator had to re-book. Violated "save alone resumes it".
FIXWired the URL-save handler to the same ensure_studio_project() the booking trigger uses; cleared studio_deferred in one transaction.
PASSRetry 2: save alone resumed; one project, chip flipped, no re-booking. Verified LIVE.