DarkFactory

Vision capture — provenance

This note records the provenance of the Gemini scoping conversation ("App Scoping Technical Specifications Discussion") and how the transcript was captured. The retired VISION.md was the non-normative synthesis of the DarkFactory product vision; it did not originate from this conversation and did not "produce Omnis" — Omnis is a separate consumer repository with its own scoping and product docs. The turns listed below document a distinct Omnis-era scoping session and are preserved here for provenance only.

Source

  • Conversation: Google Gemini, "App Scoping Technical Specifications Discussion"
  • URL: https://gemini.google.com/app/545cf54445afcd33
  • Account: the maintainer's Google account
  • Captured: 2026-09-06
  • Size: 20 turns, 79,181 characters of rendered text

Status: complete

All 20 turns are captured. No gaps.

Turns Content
0–1 App icon configuration; the Dynamic Brand Skinning Engine
2–3 Window styling — the five pillars, and the appearance schema
4–5 Typography, layout density, audio cues, icon state machines, context menus
6–7 Behavioural forking; the SystemPersonalityPackage
8–9 The Zed terminal-native UI engine and the rendering switchboard
10–11 The settings switchboard
12–13 The terminal-grid web browser
14–15 Master specification: topology, dual-socket IPC, binary substrate, security, schema
16–17 Rust implementation skeletons
18–19 Final master architecture specification

How it was captured

The first attempt used the Chrome automation extension, reading the rendered DOM in chunks because that tool truncates each read at 1,000 characters. It reached turn 15 before the extension lost its connection to the automation host and did not reconnect, leaving roughly 45,000 characters — most of the master compilation, and all of turns 16–19 — unread. Clipboard and CDP fallbacks were both unavailable: the page rejected programmatic clipboard writes without focus, and the only reachable debugging port belonged to an unrelated application.

The second attempt used the Kimi WebBridge daemon (127.0.0.1:10086) against the same browser profile, which worked in one pass:

# 1. Open the conversation in a named session so the tabs stay grouped.
{"action":"navigate","args":{"url":"<conversation url>","newTab":true,
 "group_title":"Omnis vision capture"},"session":"omnis-vision-capture"}

# 2. Extract every turn as JSON, writing curl's output straight to a file.
{"action":"evaluate","args":{"code":"(() => { const els = [...document.querySelectorAll(
 'user-query, model-response')]; return JSON.stringify(els.map((e,i) => ({i,
 role: e.tagName.toLowerCase(), text: e.innerText}))); })()"},"session":"omnis-vision-capture"}

The lesson worth keeping: route bulk extraction to a file on disk, never through a tool result. Tool output is truncated (1,000 characters for the Chrome extension's JavaScript results) and content-inspection guards reject some code-dense payloads outright — both failures are silent and partial, which is worse than an error. Writing curl output to a file and decoding it locally has neither limit. document.querySelectorAll('user-query, model-response') is the selector; each element's innerText is one complete turn.

Gemini's DOM wraps each turn in Czech UI affordances — user turns are prefixed Váš pokyn followed by a truncated preview line, model turns by Odpověď Gemini. The decoder strips these.

Ground rules

The retired VISION.md was non-normative regardless of how complete it was. Anything in it that binds the implementation was promoted deliberately into PRD.md (the single normative product document) through an approved ADR — never by treating the vision document as a specification.

The earlier VISION.md section on internally inconsistent source points was inaccurate: it cited a §11 that never existed. Disagreements among sources are recorded in the relevant ADRs and tracked issues, not re-created here.