Initial public upload from Projekte/megaHarness
Browse files- .codex/config.toml +31 -0
- ARCHITECTURE.md +335 -0
- Artefakt_USP.md +154 -0
- BRIEFING_LUIS.md +260 -0
- Höhlengleichnis.md +221 -0
- idea +23 -0
.codex/config.toml
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Coding MCPs: project-local registration (2026-09-07).
|
| 2 |
+
|
| 3 |
+
[mcp_servers.serena]
|
| 4 |
+
command = "/home/smlflg/.local/share/coding-mcp/serena/.venv/bin/serena"
|
| 5 |
+
args = ["start-mcp-server", "--context=codex", "--project", "/home/smlflg/Projekte/megaHarness", "--enable-web-dashboard", "false", "--open-web-dashboard", "false", "--enable-gui-log-window", "false"]
|
| 6 |
+
cwd = "/home/smlflg/Projekte/megaHarness"
|
| 7 |
+
enabled = true
|
| 8 |
+
startup_timeout_sec = 120
|
| 9 |
+
tool_timeout_sec = 180
|
| 10 |
+
|
| 11 |
+
[mcp_servers.serena.env]
|
| 12 |
+
"SERENA_HOME" = "/home/smlflg/.local/share/coding-mcp/serena/state"
|
| 13 |
+
|
| 14 |
+
[mcp_servers.gitnexus]
|
| 15 |
+
command = "/home/smlflg/.nvm/versions/node/v24.13.0/bin/node"
|
| 16 |
+
args = ["/home/smlflg/.local/share/coding-mcp/gitnexus/node_modules/gitnexus/dist/cli/index.js", "mcp"]
|
| 17 |
+
cwd = "/home/smlflg/Projekte/megaHarness"
|
| 18 |
+
enabled = true
|
| 19 |
+
startup_timeout_sec = 120
|
| 20 |
+
tool_timeout_sec = 180
|
| 21 |
+
|
| 22 |
+
[mcp_servers.gitnexus.env]
|
| 23 |
+
"GITNEXUS_HOME" = "/home/smlflg/.local/share/coding-mcp/gitnexus/runtime"
|
| 24 |
+
|
| 25 |
+
[mcp_servers.context7]
|
| 26 |
+
command = "/home/smlflg/.nvm/versions/node/v24.13.0/bin/node"
|
| 27 |
+
args = ["/home/smlflg/.local/share/coding-mcp/context7/node_modules/@upstash/context7-mcp/dist/index.js"]
|
| 28 |
+
cwd = "/home/smlflg/Projekte/megaHarness"
|
| 29 |
+
enabled = true
|
| 30 |
+
startup_timeout_sec = 120
|
| 31 |
+
tool_timeout_sec = 180
|
ARCHITECTURE.md
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# megaHarness — Architektur-Plan
|
| 2 |
+
|
| 3 |
+
**Status:** Architektur-Lock für 5-Tage-MVP (2026-04-23 → 2026-04-28)
|
| 4 |
+
**Autor:** Samuel (Vision) + Claude/Opus 4.7 (Architektur-Synthese)
|
| 5 |
+
**Basis-Dokumente:** `idea` (Vision), `HarnessEcosystem/docs/gpt5-4-shift-report.md` (empirische Rechtfertigung)
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## 0. North Star
|
| 10 |
+
|
| 11 |
+
megaHarness ist Samuels persönliches **Meta-Harness**: eine Schicht **über** existierenden Agent-Harnesses (Claude Code, OpenClaude, Codex, OpenHands, Cursor, …), die sie als austauschbare Execution-Engines orchestriert. Der Wert liegt nicht in einem neuen Agent, sondern in **Komposition**: gleiche Task läuft auf anderem Harness + anderem Modell, ohne Re-Konfiguration.
|
| 12 |
+
|
| 13 |
+
Die acht Prinzipien aus `idea` sind nicht verhandelbar. Alles andere ist Implementierungsdetail.
|
| 14 |
+
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
## 1. Architektur in Schichten
|
| 18 |
+
|
| 19 |
+
```
|
| 20 |
+
┌─────────────────────────────────────────────────────────────┐
|
| 21 |
+
│ L4 — UI-Layer │
|
| 22 |
+
│ Dashboard · Track-Viewer · MD-DB-Browser · Eval-Viewer │
|
| 23 |
+
├─────────────────────────────────────────────────────────────┤
|
| 24 |
+
│ L3 — Kernel (megaHarness-Core) │
|
| 25 |
+
│ Task-Router · Parallel-Orchestrator · Sidecar-Engine │
|
| 26 |
+
│ Eval-Engine · MD-Resolver · Harness-Swap │
|
| 27 |
+
├─────────────────────────────────────────────────────────────┤
|
| 28 |
+
│ L2 — MD-Datenbank (Source of Truth) │
|
| 29 |
+
│ projects/ · instructions/ · skills/ · tracks/ · evals/ │
|
| 30 |
+
├─────────────────────────────────────────────────────────────┤
|
| 31 |
+
│ L1 — Harness-Adapter-Layer │
|
| 32 |
+
│ Claude-Code · OpenClaude · Codex · OpenHands · Hermes │
|
| 33 |
+
├─────────────────────────────────────────────────────────────┤
|
| 34 |
+
│ L0 — Provider-Layer (extern, nicht megaHarness) │
|
| 35 |
+
│ Anthropic · OpenAI · Google · MiniMax · lokale Modelle │
|
| 36 |
+
└─────────────────────────────────────────────────────────────┘
|
| 37 |
+
```
|
| 38 |
+
|
| 39 |
+
**Kern-Invariante:** L3 kennt L1 nur durch Adapter-Interface, L2 nur durch Resolver-Interface, L0 nie direkt. So wird Modell-Swap und Harness-Swap zur Config-Änderung, nicht zum Refactor.
|
| 40 |
+
|
| 41 |
+
---
|
| 42 |
+
|
| 43 |
+
## 2. Kern-Komponenten
|
| 44 |
+
|
| 45 |
+
### 2.1 MD-Datenbank (L2)
|
| 46 |
+
|
| 47 |
+
**Rolle:** Einzige Quelle der Wahrheit für alle adaptiven Verträge.
|
| 48 |
+
|
| 49 |
+
**Entitäten:**
|
| 50 |
+
- `projects/*.md` — Projekt-Briefs, Done-Kriterien, Scope-Locks
|
| 51 |
+
- `instructions/*.md` — CLAUDE.md-Äquivalente, per Harness + Modell versioniert
|
| 52 |
+
- `skills/*.md` — wiederverwendbare Skill-Definitionen
|
| 53 |
+
- `sidecar/*.md` — Regelwerke (ADHS-Hooks, Scope-Guards, Commit-Gates)
|
| 54 |
+
- `tracks/*.md` — Live-Track-Definitionen (Task, Harness, Modell, Budget, Done)
|
| 55 |
+
- `evals/*.jsonl` — Eval-Läufe, append-only
|
| 56 |
+
|
| 57 |
+
**Adaptivität:** jedes MD-File hat Frontmatter mit `applies_when:`-Clauses (Harness-ID, Modell-ID, Projekt-ID, Session-Phase). Der **MD-Resolver** (L3) wählt zur Laufzeit das relevante Subset. Nicht-adaptive .md-Files sind Legacy-Schicht.
|
| 58 |
+
|
| 59 |
+
**Warum Markdown + Frontmatter, nicht SQLite/Postgres:**
|
| 60 |
+
- Menschenlesbar, Git-diffbar
|
| 61 |
+
- LLM-nativ (kein Query-Layer nötig für Konsumption)
|
| 62 |
+
- Versionierbar mit dem Repo
|
| 63 |
+
- Zero Infrastruktur, keine Migrations-Drama
|
| 64 |
+
|
| 65 |
+
**Trade-off:** keine komplexen Joins, keine Transaktionen. Für diesen Use-Case egal.
|
| 66 |
+
|
| 67 |
+
### 2.2 Harness-Adapter-Protokoll (L1↔L3-Vertrag)
|
| 68 |
+
|
| 69 |
+
Jeder Harness-Adapter implementiert ein minimales Interface:
|
| 70 |
+
|
| 71 |
+
| Method | Zweck |
|
| 72 |
+
|---|---|
|
| 73 |
+
| `spawn(track_md)` | Starte Session aus Track-MD |
|
| 74 |
+
| `status(session_id)` | Lebens-Check, Tokens, Turn-Count |
|
| 75 |
+
| `interrupt(session_id)` | Hartes Stop |
|
| 76 |
+
| `collect(session_id)` | Transcript + Metriken holen |
|
| 77 |
+
| `capabilities()` | Was kann der Harness (Tools, Background, Worktrees) |
|
| 78 |
+
|
| 79 |
+
**Completion-Contract:** jeder Spawn bekommt aus der MD-DB eine explizite `done_when:`-Clause injiziert. Harnesses ohne native Contract-Unterstützung (GPT-5.4 im Claude-Code-Harness: siehe Shift-Report) kriegen einen Wrapper-Prompt, der die Clause als System-Message voranstellt.
|
| 80 |
+
|
| 81 |
+
**Der Harness-Swap-Moment:** Swap = Track-MD unverändert lassen, nur `harness_id:` im Frontmatter ändern. Re-Spawn. Der Kernel liefert dieselben Inputs.
|
| 82 |
+
|
| 83 |
+
### 2.3 Task-Router (L3)
|
| 84 |
+
|
| 85 |
+
**Input:** Task-Request (aus UI, CLI, Cron oder Eval-Trigger)
|
| 86 |
+
**Output:** Track-MD + Harness-Auswahl
|
| 87 |
+
|
| 88 |
+
**Routing-Logik:**
|
| 89 |
+
1. Matching: welche Harnesses + Modelle sind kompatibel mit Task-Typ
|
| 90 |
+
2. Policy: Default-Modell pro Task-Typ aus `instructions/router-policy.md`
|
| 91 |
+
3. Override: explizite User-Wahl schlägt Policy
|
| 92 |
+
4. Fallback: wenn Primär-Harness unavailable, Sekundär aus Policy
|
| 93 |
+
|
| 94 |
+
**Empirisch kalibriert:** Shift-Report zeigt, dass GPT-5.4 im Claude-Code-Harness 2–8M Input-Tokens pro Session verbrennt. Router-Policy verhindert diese Kombination by default, es sei denn explizit als Experiment deklariert.
|
| 95 |
+
|
| 96 |
+
### 2.4 Parallel-Orchestrator (L3)
|
| 97 |
+
|
| 98 |
+
**Rolle:** N Tracks gleichzeitig, keine Race Conditions im Dateisystem, Checkpoint-fähig.
|
| 99 |
+
|
| 100 |
+
**Mechanismen:**
|
| 101 |
+
- Git-Worktree pro Track (Isolation auf Repo-Ebene)
|
| 102 |
+
- tmux/supervisord für Prozess-Leben (keine eigene Prozess-Verwaltung bauen)
|
| 103 |
+
- MD-Queue für Track-Slots (`tracks/active/`, `tracks/queued/`, `tracks/done/`, `tracks/failed/`)
|
| 104 |
+
- Heartbeat-File pro Track für Status-Polling
|
| 105 |
+
|
| 106 |
+
**Kapazität:** 3–5 Tracks parallel. Mehr ist Token-Verbrennung ohne Kognitions-Nutzen (Samuel kann nicht 8 parallel reviewen).
|
| 107 |
+
|
| 108 |
+
### 2.5 Sidecar-Engine (L3)
|
| 109 |
+
|
| 110 |
+
**Rolle:** Samuel-spezifische Kalibrierung — ADHS-Guards, Scope-Warnungen, Commit-Gates.
|
| 111 |
+
|
| 112 |
+
**Baut auf:** existierendem `Sidecar-ng`-Projekt (bereits produktiv, liefert die Hook-Payloads die dieser Dialog durchgehend zeigt).
|
| 113 |
+
|
| 114 |
+
**Integration:** Sidecar-Engine ist **kein neuer Code**, sondern ein Adapter der existierende Sidecar-NG-Events an die MD-DB und den Orchestrator sendet. Regeln kommen aus `sidecar/*.md`.
|
| 115 |
+
|
| 116 |
+
**Kernfunktion für megaHarness:** Cross-Track-Scope-Guard. Wenn Track A in `home/` arbeitet und Track B plötzlich auch: Flag.
|
| 117 |
+
|
| 118 |
+
### 2.6 Eval-Engine (L3)
|
| 119 |
+
|
| 120 |
+
**Rolle:** jeder Track misst sich selbst.
|
| 121 |
+
|
| 122 |
+
**Baut auf:** existierendem `HarnessEcosystem/sidebyside` (liefert bereits snapshot-basierte Vergleiche, siehe Shift-Report).
|
| 123 |
+
|
| 124 |
+
**Metriken pro Track:**
|
| 125 |
+
- Token-Effizienz (in/out, pro Turn)
|
| 126 |
+
- Tool-Burst-Dichte (Tool-Calls pro Turn)
|
| 127 |
+
- Contract-Adhärenz (Done-Clause erreicht?)
|
| 128 |
+
- Termination-Typ (clean / limit / interrupt / crash)
|
| 129 |
+
- Outcome-Label (manuell oder durch Review-Track)
|
| 130 |
+
|
| 131 |
+
**Feedback-Loop:** Eval-Ergebnisse schreiben zurück nach `evals/*.jsonl`. Router-Policy konsumiert aggregierte Evals → empirische Modell-Auswahl.
|
| 132 |
+
|
| 133 |
+
### 2.7 UI-Layer (L4)
|
| 134 |
+
|
| 135 |
+
**Kern-Views:**
|
| 136 |
+
1. Track-Dashboard (welche Tracks laufen, Status, ETA, Tokens)
|
| 137 |
+
2. MD-DB-Browser (Navigation + Diff)
|
| 138 |
+
3. Eval-Viewer (Baut auf `frontier-llm-harness`-Ästhetik auf)
|
| 139 |
+
4. Spawn-Composer (Track-MD erstellen → Router → Adapter)
|
| 140 |
+
|
| 141 |
+
**Technologie-Entscheidung:** statische SPA + lokaler HTTP-Server, liest direkt aus `tracks/` + `evals/`. Kein Backend. Grund: `sidebyside` + `frontier-llm-harness` haben das Pattern bereits bewiesen, keine neue Infrastruktur.
|
| 142 |
+
|
| 143 |
+
**Live-Updates:** Polling (nicht WebSocket). KISS.
|
| 144 |
+
|
| 145 |
+
---
|
| 146 |
+
|
| 147 |
+
## 3. Bausteine-Map (Was existiert, was fehlt)
|
| 148 |
+
|
| 149 |
+
| Schicht / Komponente | Existierend (✓) / Fehlt (✗) | Quelle |
|
| 150 |
+
|---|---|---|
|
| 151 |
+
| L2 MD-DB Schema | ✗ | — |
|
| 152 |
+
| L2 MD-Resolver | ✗ | — |
|
| 153 |
+
| L2 Adaptive Regeln existierend | (✓) teilweise | PromptGarage, Skills |
|
| 154 |
+
| L1 Claude Code Adapter | (✓) implizit (JSONL-Logs) | `~/.claude/projects/` |
|
| 155 |
+
| L1 Codex/GPT-5.4 Adapter | (✓) implizit | `extract_codex.py` |
|
| 156 |
+
| L1 OpenClaude Adapter | ✗ | Fork existiert, kein Adapter |
|
| 157 |
+
| L1 Hermes Adapter | (✓) teilweise | `extract_hermes.py` |
|
| 158 |
+
| L1 OpenHands Adapter | ✗ | — |
|
| 159 |
+
| L3 Harness-Swap Mechanik | (in Arbeit) | `derWolfimSchafspelz/openclaude` |
|
| 160 |
+
| L3 Task-Router | ✗ | — |
|
| 161 |
+
| L3 Parallel-Orchestrator | ✗ | — |
|
| 162 |
+
| L3 Sidecar-Engine | ✓ | `Sidecar-ng` |
|
| 163 |
+
| L3 Eval-Engine | ✓ | `HarnessEcosystem/sidebyside` |
|
| 164 |
+
| L4 Dashboard | (✓) Aesthetik + Pattern | `SidecarDashboard`, `KomandoZentral`, `frontier-llm-harness` |
|
| 165 |
+
|
| 166 |
+
**Schlüssel-Erkenntnis:** L2 (MD-DB) ist der kritische neue Baustein. L3-Kernel ist dünne Integration existierender Teile. L1-Adapter sind jeweils 1–2 Tage Arbeit, wir brauchen in 5 Tagen nur 2–3.
|
| 167 |
+
|
| 168 |
+
---
|
| 169 |
+
|
| 170 |
+
## 4. Harness-Swap — der aktuelle Build
|
| 171 |
+
|
| 172 |
+
**Definition:** Harness-Swap ist der Mechanismus, der denselben Task auf einem anderen Harness re-exekutiert, ohne Task-Definition zu ändern.
|
| 173 |
+
|
| 174 |
+
**Architekturrolle:** Harness-Swap ist **nicht** ein L1-Adapter. Es ist ein L3-Kernel-Feature, das L1-Adapter koordiniert.
|
| 175 |
+
|
| 176 |
+
**Interface:**
|
| 177 |
+
```
|
| 178 |
+
swap(track_id, from_harness, to_harness) →
|
| 179 |
+
1. collect(from_harness.session) → transcript + state
|
| 180 |
+
2. translate(state, to_harness.capabilities) → new_state
|
| 181 |
+
3. track_md.harness_id = to_harness
|
| 182 |
+
4. spawn(to_harness, track_md, continuation=new_state)
|
| 183 |
+
```
|
| 184 |
+
|
| 185 |
+
**State-Translation-Regeln** sind in `instructions/harness-translation-*.md` abgelegt (eine Datei pro Harness-Paar). Diese Regeln sind **adaptiv** — sie werden basierend auf Eval-Daten (was hat funktioniert beim letzten Swap?) fortgeschrieben.
|
| 186 |
+
|
| 187 |
+
**MVP-Umfang:** Claude Code ↔ OpenClaude Swap. Alles andere Post-MVP.
|
| 188 |
+
|
| 189 |
+
---
|
| 190 |
+
|
| 191 |
+
## 5. Datenfluss — der eine zentrale Loop
|
| 192 |
+
|
| 193 |
+
```
|
| 194 |
+
User-Intent
|
| 195 |
+
↓
|
| 196 |
+
MD-Resolver liest projects/ + instructions/
|
| 197 |
+
↓
|
| 198 |
+
Task-Router wählt Harness + Modell (Policy + Eval-History)
|
| 199 |
+
↓
|
| 200 |
+
Track-MD geschrieben in tracks/active/
|
| 201 |
+
↓
|
| 202 |
+
Parallel-Orchestrator spawnt via L1-Adapter
|
| 203 |
+
↓
|
| 204 |
+
Harness läuft (mit Completion-Contract injiziert)
|
| 205 |
+
↓
|
| 206 |
+
Sidecar-Engine beobachtet, flagt bei Regel-Verletzung
|
| 207 |
+
↓
|
| 208 |
+
Abschluss: Eval-Engine schreibt nach evals/*.jsonl
|
| 209 |
+
↓
|
| 210 |
+
Track-MD nach tracks/done/ verschoben
|
| 211 |
+
↓
|
| 212 |
+
UI reflektiert neuen Zustand
|
| 213 |
+
↓
|
| 214 |
+
Router-Policy lernt aus evals/ für nächsten Spawn
|
| 215 |
+
```
|
| 216 |
+
|
| 217 |
+
Dieser Loop ist das System. Alles andere ist Verzierung.
|
| 218 |
+
|
| 219 |
+
---
|
| 220 |
+
|
| 221 |
+
## 6. 5-Tage-Meilensteine (architektonisch)
|
| 222 |
+
|
| 223 |
+
Jeder Meilenstein hat **eine binäre Done-Frage**, nicht eine Feature-Liste.
|
| 224 |
+
|
| 225 |
+
### Tag 1 — Fundament (2026-04-23)
|
| 226 |
+
**Done-Frage:** Existiert `md-db/` mit Schema-definierten Frontmatter-Keys, und kann der MD-Resolver aus einer `tracks/example.md` eine zusammengesetzte Instruction produzieren?
|
| 227 |
+
- MD-DB-Schema finalisiert (Frontmatter-Felder, Ordner-Layout)
|
| 228 |
+
- MD-Resolver als dünner Layer
|
| 229 |
+
- Ein Beispiel-Track in der DB abgelegt
|
| 230 |
+
- **Non-Goal Tag 1:** kein Spawn, keine UI, kein Router
|
| 231 |
+
|
| 232 |
+
### Tag 2 — Execution (2026-04-24)
|
| 233 |
+
**Done-Frage:** Kann ein Track-MD via Adapter einen Claude-Code-Subprozess spawnen, laufen lassen, und das Transcript ingesten?
|
| 234 |
+
- L1-Adapter: Claude Code (via CLI-Spawn)
|
| 235 |
+
- L1-Adapter: OpenClaude (via Fork-CLI)
|
| 236 |
+
- L3 Spawn-Funktion im Kernel
|
| 237 |
+
- **Non-Goal:** kein Parallelismus, kein Swap, kein Router
|
| 238 |
+
|
| 239 |
+
### Tag 3 — Parallelität + Router (2026-04-25)
|
| 240 |
+
**Done-Frage:** Laufen 3 Tracks gleichzeitig in Worktrees, ohne dass sie sich im Dateisystem zerstören, und wählt der Router automatisch Harness+Modell aus der Policy?
|
| 241 |
+
- Parallel-Orchestrator mit Worktree-Isolation
|
| 242 |
+
- Task-Router mit statischer Policy (Eval-Feedback Post-MVP)
|
| 243 |
+
- Heartbeat + Status-Polling
|
| 244 |
+
- **Non-Goal:** UI, Swap
|
| 245 |
+
|
| 246 |
+
### Tag 4 — Swap + Eval-Integration (2026-04-26)
|
| 247 |
+
**Done-Frage:** Kann ein laufender Track von Claude Code nach OpenClaude geswapt werden, und schreibt der Eval-Hook nach Abschluss saubere Metriken in `evals/`?
|
| 248 |
+
- Harness-Swap (MVP: Claude Code ↔ OpenClaude)
|
| 249 |
+
- Eval-Engine-Hook an Adapter-Collection angebunden
|
| 250 |
+
- `sidebyside`-Scripts als Eval-Konsumenten integriert
|
| 251 |
+
- **Non-Goal:** UI, Router-Lernen aus Evals
|
| 252 |
+
|
| 253 |
+
### Tag 5 — UI + E2E (2026-04-27, Puffer 2026-04-28)
|
| 254 |
+
**Done-Frage:** Sieht Samuel im Browser ein Track-Dashboard, kann er einen neuen Track spawnen und das Ergebnis inklusive Evals einsehen?
|
| 255 |
+
- Statische SPA mit Track-Dashboard + MD-DB-Browser + Eval-Viewer
|
| 256 |
+
- Spawn-Composer (einfache Form, kein Advanced)
|
| 257 |
+
- Ein echter E2E-Run: Spawn → Parallel → Swap → Eval → UI
|
| 258 |
+
- Puffer-Tag (28.04) für Polish und unerwartete Blocker
|
| 259 |
+
|
| 260 |
+
---
|
| 261 |
+
|
| 262 |
+
## 7. Risiken & Mitigationen
|
| 263 |
+
|
| 264 |
+
| Risiko | Wahrscheinlichkeit | Impact | Mitigation |
|
| 265 |
+
|---|---|---|---|
|
| 266 |
+
| Scope-Creep über MVP hinaus | Hoch | Hoch | Jeder Tag hat eine binäre Done-Frage, nicht Feature-Liste. Post-MVP-Liste explizit in §9. |
|
| 267 |
+
| GPT-5.4 im Claude-Code-Harness verbrennt Token-Budget | Hoch | Mittel | Router-Policy verhindert Kombination by default. Nur als explizites Experiment. Empirisch belegt durch Shift-Report. |
|
| 268 |
+
| UI-Tag-5 wird zum Zeitfresser | Hoch | Hoch | Statische SPA, keine neue Infrastruktur. `frontier-llm-harness` als Muster. Kein Framework-Neuwahl. |
|
| 269 |
+
| MD-DB-Schema wird zu komplex | Mittel | Hoch | Schema ≤ 10 Frontmatter-Keys im MVP. Erweiterung nur mit belegtem Use-Case. |
|
| 270 |
+
| Parallelismus zerstört Dateisystem | Mittel | Hoch | Git-Worktree pro Track. Kein Shared-State außerhalb `md-db/`. |
|
| 271 |
+
| Bestehende Projekte nicht sauber integrierbar | Mittel | Mittel | MVP nutzt nur `Sidecar-ng` und `sidebyside` als Integration. Rest Post-MVP. |
|
| 272 |
+
| 5-Tage-Schätzung zu optimistisch | Hoch | Hoch | Tag 5 hat Puffer 28.04. MVP-Scope bewusst klein. Wenn Tag 3 nicht done: Swap+Eval gehen Post-MVP. |
|
| 273 |
+
| ADHS-Fokus-Kollaps | Mittel | Hoch | Sidecar-NG aktiv, tägliche Done-Frage als Anker, keine Parallelarbeit an mehr als EINEM Kernel-Teil gleichzeitig. |
|
| 274 |
+
|
| 275 |
+
---
|
| 276 |
+
|
| 277 |
+
## 8. Done-Kriterien (Tag 5)
|
| 278 |
+
|
| 279 |
+
Der MVP ist fertig, wenn **alle** folgenden Bedingungen wahr sind:
|
| 280 |
+
1. `md-db/` existiert mit den definierten Ordnern
|
| 281 |
+
2. Mindestens 2 Harness-Adapter funktionieren (Claude Code, OpenClaude)
|
| 282 |
+
3. 3 Tracks sind parallel gelaufen ohne gegenseitige Blockade
|
| 283 |
+
4. Ein Harness-Swap wurde erfolgreich durchgeführt (Claude Code → OpenClaude)
|
| 284 |
+
5. Mindestens ein Eval-Lauf ist in `evals/` persistent
|
| 285 |
+
6. UI zeigt aktuelle Tracks + Evals korrekt
|
| 286 |
+
7. Ein Ende-zu-Ende-Flow (Spawn → Parallel → Swap → Eval → UI) lief ohne manuelle Eingriffe durch
|
| 287 |
+
|
| 288 |
+
Wenn 5 von 7 erreicht: **MVP accepted**. Wenn weniger: MVP-Scope reevaluieren, nicht verlängern.
|
| 289 |
+
|
| 290 |
+
---
|
| 291 |
+
|
| 292 |
+
## 9. Non-Goals (Post-MVP, bewusst ausgeschlossen)
|
| 293 |
+
|
| 294 |
+
- Cursor-Adapter
|
| 295 |
+
- OpenHands-Adapter
|
| 296 |
+
- Hermes-Adapter (Collect-Script reicht)
|
| 297 |
+
- Router-Policy-Lernen aus Eval-History
|
| 298 |
+
- Advanced Spawn-Composer in UI (Form-only reicht)
|
| 299 |
+
- Fremde Repos als Tracks (nur eigene im MVP)
|
| 300 |
+
- Cloud-Deployment
|
| 301 |
+
- Multi-User
|
| 302 |
+
- Auth
|
| 303 |
+
- Mobile-UI
|
| 304 |
+
- Persistente DB (MD-Files reichen)
|
| 305 |
+
- Config-Hot-Reload
|
| 306 |
+
- Skill-Marketplace
|
| 307 |
+
- Eval-Auto-Labeling durch Review-Track
|
| 308 |
+
|
| 309 |
+
Jeder dieser Punkte ist ein legitimes Feature — aber nicht in 5 Tagen.
|
| 310 |
+
|
| 311 |
+
---
|
| 312 |
+
|
| 313 |
+
## 10. Glossar
|
| 314 |
+
|
| 315 |
+
- **Harness**: Ausführungsumgebung für einen Agent (Claude Code, Codex, OpenHands …)
|
| 316 |
+
- **Modell**: LLM-Endpoint (Opus, GPT-5.4, …)
|
| 317 |
+
- **Track**: Eine konkrete Task-Instanz mit Harness + Modell + Projekt-Kontext
|
| 318 |
+
- **Spawn**: Track in einem Harness starten
|
| 319 |
+
- **Swap**: Track mitten im Leben auf anderen Harness übertragen
|
| 320 |
+
- **MD-DB**: Markdown-basierte Datenbank (L2)
|
| 321 |
+
- **Completion-Contract**: Explizites `done_when:` in Track-MD
|
| 322 |
+
- **Adaptiv**: .md-File gilt nur wenn Frontmatter-`applies_when:` zur Laufzeit matcht
|
| 323 |
+
|
| 324 |
+
---
|
| 325 |
+
|
| 326 |
+
## 11. Offene Architektur-Fragen (vor Tag 1 zu entscheiden)
|
| 327 |
+
|
| 328 |
+
1. **Kernel-Sprache:** Python (ökosystemnah zu Claude Code + Codex) vs TypeScript (näher an UI). **Empfehlung: Python**, Grund: alle existierenden Scripts (`extract_*.py`, `build_snapshot.py`) sind Python. Kein Sprach-Bruch.
|
| 329 |
+
2. **Prozess-Modell:** tmux vs supervisord vs systemd-user. **Empfehlung: tmux**, Grund: Samuel nutzt es bereits, minimal neues Setup.
|
| 330 |
+
3. **UI-Framework:** vanilla JS (wie `sidebyside`) vs Preact vs Svelte. **Empfehlung: vanilla**, Grund: `sidebyside` + `frontier-llm-harness` sind vanilla und lesbar.
|
| 331 |
+
4. **MD-DB-Location:** `~/.megaharness/md-db/` vs im Repo. **Empfehlung: im Repo** (`megaHarness/md-db/`), Grund: Git-versioniert, portabel, diffbar.
|
| 332 |
+
|
| 333 |
+
---
|
| 334 |
+
|
| 335 |
+
**Dieser Plan ist ein Vertrag zwischen Samuel und dem 5-Tage-Ich. Jede Abweichung muss als ADR (Architecture Decision Record) in `docs/adr/` dokumentiert werden — oder explizit abgelehnt und hier gestrichen. Keine stille Scope-Drift.**
|
Artefakt_USP.md
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Artefakt-USP-Doktrin
|
| 2 |
+
|
| 3 |
+
**Zweck:** Leitlinie für die Entscheidung „eigen bauen vs. fremdes Repo integrieren" über die gesamte Lebenszeit von megaHarness.
|
| 4 |
+
**Gilt neben:** `ARCHITECTURE.md`
|
| 5 |
+
**Adressat:** Samuel (und zukünftige Claude/Opus-Sessions, die Architektur-Entscheidungen treffen)
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## 0. Kernsatz
|
| 10 |
+
|
| 11 |
+
> **Samuels USP ist nicht Code. Der USP ist die Sammlung der Artefakte: MD-Datenbank-Inhalte, Sidecar-Regeln, Router-Policies, Track-Done-Definitionen, Eval-Interpretationen.**
|
| 12 |
+
> **Code ist die dünne Schicht, die diese Artefakte zum Leben bringt. Nicht umgekehrt.**
|
| 13 |
+
|
| 14 |
+
Jede Entscheidung „selbst bauen vs. fremd integrieren" wird gegen diesen Satz gehalten. Wenn der Beitrag eines Code-Stücks austauschbar ist durch ein fremdes Repo, das dieselbe Funktion erfüllt: integrieren. Wenn der Beitrag Samuels spezifische Arbeitsweise, Denkmuster oder Qualitätsurteile kodiert: selbst bauen, selbst pflegen.
|
| 15 |
+
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
## 1. Warum das die richtige Trennung ist
|
| 19 |
+
|
| 20 |
+
Samuels knappste Ressource ist **nicht** Code-Lines und **nicht** Tokens. Sie ist **Fokus-Zeit**. Jede Stunde, die in selbstgebaute Commodity-Layer fließt (HTTP-Server, Markdown-Parser, Prozess-Orchestrierung, Model-Routing), ist eine Stunde, die nicht in den USP-Artefakten steckt — dort wo der tatsächliche Wert erzeugt wird.
|
| 21 |
+
|
| 22 |
+
Die Gegenrichtung ist gleichermaßen falsch: wer fremde Repos verwendet, um seinen USP zu definieren, baut fremde Ideologie in sein System ein und wird dauerhaft gegen Upstream-Entscheidungen kämpfen.
|
| 23 |
+
|
| 24 |
+
**Die Doktrin ist also:** fremde Substanz für fremdes Problem (Plumbing), eigene Substanz für eigenes Problem (Arbeitsweise).
|
| 25 |
+
|
| 26 |
+
---
|
| 27 |
+
|
| 28 |
+
## 2. Ratio nach Schicht (Referenz-Tabelle)
|
| 29 |
+
|
| 30 |
+
| Schicht | Eigen / Fremd | Begründung |
|
| 31 |
+
|---|---|---|
|
| 32 |
+
| **MD-DB-Schema + Inhalte** (L2) | **100% eigen** | Das IST die Personalisierung. Unersetzlich. |
|
| 33 |
+
| **Sidecar-Engine** (L3) | **100% eigen**, existiert als `Sidecar-ng` | ADHS-Kalibrierung und Regelwerk sind unique zu Samuel |
|
| 34 |
+
| **Router-Policy** (L3) | **100% eigen** | Policy ist empirisches Lernen, nicht Standard |
|
| 35 |
+
| **Track-MD-Format / Done-Sprache** (L2) | **100% eigen** | Samuels Definition von „fertig" |
|
| 36 |
+
| **Eval-Interpretationen** (L3) | **100% eigen** | Baut auf `sidebyside`, Wertung bleibt Samuels |
|
| 37 |
+
| **UI-Komposition** (L4) | ~80% eigen, ~20% Komponenten | Scan-Ästhetik ist persönlich, Buttons sind commodity |
|
| 38 |
+
| **Kernel-Glue** (L3: Spawn, Collect, Swap) | ~60% eigen, ~40% Libraries | Dünn halten; Pydantic / subprocess / GitPython nutzen |
|
| 39 |
+
| **Parallel-Orchestrator** (L3) | ~30% eigen, ~70% tmux/supervisord | Unix löst Prozess-Management seit Jahrzehnten |
|
| 40 |
+
| **Harness-Adapter** (L1) | ~90% fremd (via CLI-Spawn), ~10% Mapping-Code | Wrapper, nie Fork |
|
| 41 |
+
| **Model-Routing** (L0-nah) | ~5% eigen, ~95% LiteLLM / aisuite | Gelöstes Problem, nicht nachbauen |
|
| 42 |
+
| **Basis-Rendering / MD-Parser** (L4/L2-Infra) | 0% eigen | `markdown-it`, `python-frontmatter` — fertig |
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
## 3. Faustzahlen
|
| 47 |
+
|
| 48 |
+
- **Code-Volumen:** ~25% eigen, ~75% Libraries/Adapter-Shims
|
| 49 |
+
- **Architektur-Entscheidungen:** ~80% eigen, ~20% übernommen
|
| 50 |
+
- **Artefakt-Inhalte** (MDs, Regeln, Policies): **100% eigen**
|
| 51 |
+
- **Token-Investment-Verteilung** (über 5-Tage-MVP und darüber hinaus):
|
| 52 |
+
- ~60% in Artefakt-Erzeugung (MDs schreiben, Regeln kalibrieren, Evals lesen und umsetzen)
|
| 53 |
+
- ~30% in Kernel-Glue-Code
|
| 54 |
+
- ~10% in Integration fremder Bibliotheken und Adapter
|
| 55 |
+
|
| 56 |
+
Wenn das Verhältnis kippt (mehr Glue-Code als Artefakte), ist das ein Alarmsignal — nicht ein Feature-Fortschritt.
|
| 57 |
+
|
| 58 |
+
---
|
| 59 |
+
|
| 60 |
+
## 4. Anti-Patterns (Muster die Samuel dokumentiert bisher daran hindern, Projekte abzuschließen)
|
| 61 |
+
|
| 62 |
+
### A1 — Fork-als-Maintenance
|
| 63 |
+
Fremdes Repo forken und selbst pflegen. Upstream bewegt sich, der Fork bleibt stehen, Merge-Schulden wachsen exponentiell. **Beispiel:** `derWolfimSchafspelz/openclaude`.
|
| 64 |
+
**Gegenmittel:** Adapter statt Fork. Fork nur wenn Adapter nachweislich nicht möglich. Wenn Fork, dann Upstream-Tracking dokumentieren.
|
| 65 |
+
|
| 66 |
+
### A2 — Eigenbau-aus-Prinzip
|
| 67 |
+
Alles selbst bauen, weil „fremdes Tool nicht gut genug" oder „passt nicht zu meiner Arbeitsweise".
|
| 68 |
+
**Gegenmittel:** Unterscheide „passt nicht zu meiner Arbeitsweise" (→ Adapter + eigene Konfiguration reicht) von „löst das falsche Problem" (→ selbst bauen). In 90% der Fälle ist es Ersteres.
|
| 69 |
+
|
| 70 |
+
### A3 — Framework-Shopping
|
| 71 |
+
Diese Woche LangGraph, nächste Woche Goose, übernächste OpenHands. Jede Woche Setup, nie Nutzung.
|
| 72 |
+
**Gegenmittel:** Pro Schicht genau **ein** Execution-Target im MVP. Wechsel erst nach dokumentiertem Fail-Criterium.
|
| 73 |
+
|
| 74 |
+
### A4 — Perfektionismus auf Glue
|
| 75 |
+
Viele Stunden in Refactoring von Code, der nur existiert, um Artefakte zu laden und an Harnesses zu schicken.
|
| 76 |
+
**Gegenmittel:** Glue darf hässlich sein. Artefakte müssen gut sein. Review-Zeit entsprechend verteilen.
|
| 77 |
+
|
| 78 |
+
### A5 — Ideologie-Import
|
| 79 |
+
Fremdes Repo so tief integrieren, dass sein Abstraktions-Modell (z.B. „Agent", „Chain", „Flow") das eigene Modell überschreibt.
|
| 80 |
+
**Gegenmittel:** Integration über dünne Adapter, die fremde Terminologie an megaHarness-Terminologie übersetzen. MD-DB kennt nur megaHarness-Begriffe.
|
| 81 |
+
|
| 82 |
+
### A6 — Verbose Migration statt Import
|
| 83 |
+
Existierende eigene Projekte (Sidecar-ng, sidebyside, PromptGarage) Stück für Stück in megaHarness kopieren.
|
| 84 |
+
**Gegenmittel:** **Importieren statt portieren.** Die Projekte bleiben wo sie sind. megaHarness ruft sie auf. Wenn eine echte API-Harmonisierung nötig ist: dünner Wrapper, kein Umzug.
|
| 85 |
+
|
| 86 |
+
---
|
| 87 |
+
|
| 88 |
+
## 5. Konkrete Anwendung für megaHarness (MVP und Post-MVP)
|
| 89 |
+
|
| 90 |
+
### 5.1 Eigene Projekte → importieren, nicht portieren
|
| 91 |
+
|
| 92 |
+
| Projekt | Rolle in megaHarness | Art der Integration |
|
| 93 |
+
|---|---|---|
|
| 94 |
+
| `Sidecar-ng` | Sidecar-Engine (L3) | Import als Library oder Subprocess-Call |
|
| 95 |
+
| `HarnessEcosystem/sidebyside` | Eval-Engine (L3) | Datenaustausch über `evals/*.jsonl` |
|
| 96 |
+
| `frontier-llm-harness` | UI-Pattern für L4 | Muster übernehmen, nicht Code kopieren |
|
| 97 |
+
| `SidecarDashboard` | UI-Komponenten-Quelle | Selektive Wiederverwendung |
|
| 98 |
+
| `KomandoZentral` | UI-Layout-Referenz | Layout-Ideen übernehmen |
|
| 99 |
+
| `PromptGarage` | MD-DB-Inhalt-Quelle | Datei-Import, kein Code-Import |
|
| 100 |
+
| `Hermes` | Notification-Sink | Message-Send via existierende Hermes-API |
|
| 101 |
+
| `openclaude` Fork | Adapter-Target | Nur als CLI-Spawn-Ziel nutzen, keine Code-Integration |
|
| 102 |
+
|
| 103 |
+
### 5.2 Fremde Repos → als Library oder Adapter-Target, nie als Fork
|
| 104 |
+
|
| 105 |
+
| Tool | Rolle | Integrations-Stil |
|
| 106 |
+
|---|---|---|
|
| 107 |
+
| **LiteLLM** | Model-Routing (L0-nah) | Library-Import, keine Modifikation |
|
| 108 |
+
| **OpenHands** | Adapter-Target (L1, Post-MVP) | CLI-Spawn über Adapter, kein Code-Import |
|
| 109 |
+
| **Goose** | Adapter-Target (L1, optional) | Dito |
|
| 110 |
+
| **tmux / supervisord** | Parallel-Orchestrator (L3) | System-Binary, Config-Files |
|
| 111 |
+
| **Pydantic / python-frontmatter / markdown-it** | MD-DB-Plumbing | Standard-Libraries |
|
| 112 |
+
|
| 113 |
+
### 5.3 USP-Artefakte → selbst, konstant pflegen
|
| 114 |
+
|
| 115 |
+
- Alle `md-db/**/*.md`-Inhalte
|
| 116 |
+
- Alle Router-Policy-Dateien
|
| 117 |
+
- Alle Sidecar-Regel-Dateien
|
| 118 |
+
- Alle Eval-Interpretations-Dokumente
|
| 119 |
+
- Alle Track-Templates
|
| 120 |
+
- Jede Erweiterung des MD-DB-Schemas
|
| 121 |
+
|
| 122 |
+
**Diese Kategorie darf nie an ein fremdes Repo outgesourced werden, auch wenn es vermeintlich ähnliche Lösungen gibt.** Sie ist der einzige Grund, warum megaHarness existiert.
|
| 123 |
+
|
| 124 |
+
---
|
| 125 |
+
|
| 126 |
+
## 6. Entscheidungs-Heuristik (für jede neue Komponente)
|
| 127 |
+
|
| 128 |
+
Folgende drei Fragen in Reihenfolge:
|
| 129 |
+
|
| 130 |
+
1. **Ist das ein gelöstes Commodity-Problem?** (HTTP, Parsing, Prozess-Start, Model-Aufruf)
|
| 131 |
+
→ Ja: Library importieren. Keine Diskussion.
|
| 132 |
+
2. **Ist das Verhalten an Samuels Arbeitsweise gebunden?** (Done-Kriterien, Regel-Interaktionen, UI-Scan-Patterns)
|
| 133 |
+
→ Ja: selbst bauen. Keine Diskussion.
|
| 134 |
+
3. **Wenn weder eindeutig ja: existiert ein fremdes Repo, das dasselbe Problem löst und dessen Abstraktionen zu megaHarness-Denken passen?**
|
| 135 |
+
→ Ja: Adapter schreiben, nicht forken.
|
| 136 |
+
→ Nein: selbst bauen, aber minimal.
|
| 137 |
+
|
| 138 |
+
Wenn die Antwort auf alle drei Fragen unklar ist: die Komponente ist wahrscheinlich nicht MVP-relevant.
|
| 139 |
+
|
| 140 |
+
---
|
| 141 |
+
|
| 142 |
+
## 7. Review-Trigger
|
| 143 |
+
|
| 144 |
+
Diese Doktrin wird geprüft und ggf. angepasst:
|
| 145 |
+
- Am Ende des 5-Tage-MVP (2026-04-28)
|
| 146 |
+
- Bei jeder Entscheidung, einen neuen Fork anzulegen
|
| 147 |
+
- Bei jeder Entscheidung, mehr als 500 Zeilen eigenen Glue-Code zu schreiben
|
| 148 |
+
- Wenn die Faustzahlen in §3 merklich kippen (weniger als 50% Token-Investment in Artefakte)
|
| 149 |
+
|
| 150 |
+
Die Doktrin selbst ist nicht dogmatisch — aber Abweichungen werden dokumentiert, als ADR in `docs/adr/`, bevor sie implementiert werden.
|
| 151 |
+
|
| 152 |
+
---
|
| 153 |
+
|
| 154 |
+
**Dieser Artefakt ist ein Vertrag zwischen Samuel und seinem zukünftigen Ich, das in Versuchung kommen wird, entweder alles neu zu bauen oder alles zuzukaufen. Beides wäre ein Fehler. Das Produkt ist die Komposition.**
|
BRIEFING_LUIS.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Briefing für Luis — Architektur-Konsolidierung Agent Control Tower
|
| 2 |
+
|
| 3 |
+
> Hi Luis, danke nochmal fürs Telefonat. Dieses Dokument fasst zusammen, was ich erzählt habe, plus den Stand des Codes, den du brauchst, um den Konsolidierungs-Plan ohne Rückfragen schreiben zu können. Wenn etwas widerspricht, gilt unser Telefonat — schreib mir, ich klär das.
|
| 4 |
+
>
|
| 5 |
+
> **Was du am Ende lieferst:** eine Markdown-Datei `KONSOLIDIERUNG_LUIS.md` neben diesem Briefing. Details siehe §8.
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## 0. Lese-Reihenfolge und Auftrag
|
| 10 |
+
|
| 11 |
+
Bitte geh in dieser Reihenfolge vor:
|
| 12 |
+
|
| 13 |
+
1. **Zuerst die Website**: [`index.html`](./index.html)
|
| 14 |
+
2. **Dann dieses Briefing**: [`BRIEFING_LUIS.md`](./BRIEFING_LUIS.md)
|
| 15 |
+
3. **Dann, nur falls du tiefer reinschauen willst**:
|
| 16 |
+
- [`AGENT_CONTROL_TOWER_PROJECT_AUDIT.md`](./AGENT_CONTROL_TOWER_PROJECT_AUDIT.md)
|
| 17 |
+
- [`agent-control-tower-steckbriefe.md`](./agent-control-tower-steckbriefe.md)
|
| 18 |
+
|
| 19 |
+
Wichtig: Ich brauche von dir **erstmal keine Implementierung**. Kein Code schreiben, nichts refactoren, kein Repo neu aufsetzen. Ich brauche eine **technische Konsolidierungsentscheidung**:
|
| 20 |
+
|
| 21 |
+
- Welches Projekt wird der **Anker**?
|
| 22 |
+
- Was wird **übernommen**?
|
| 23 |
+
- Was wird **archiviert**?
|
| 24 |
+
- Wie sieht die **minimale Repo-/Architektur-Topologie** aus?
|
| 25 |
+
|
| 26 |
+
Das Ziel ist **nicht**, alle bisherigen Projekte zusammenzukippen, sondern daraus einen realistischen **Agent Control Tower** zu machen.
|
| 27 |
+
|
| 28 |
+
---
|
| 29 |
+
|
| 30 |
+
## 1. Die Vision in einem Satz
|
| 31 |
+
|
| 32 |
+
**Agent Control Tower** ist ein Cockpit, das alle meine agentischen Aktivitäten und Projekte greifbar und übersichtlich macht, einen strikten Fokus-Modus erzwingt und Tasks in **megaHarness** als Orchestrator funnelt.
|
| 33 |
+
|
| 34 |
+
Endzustand, an dem ich es als „fertig" erkenne: ich kann am Computer sitzen, Dinge umsetzen, die Idee verkaufen und anderen beibringen.
|
| 35 |
+
|
| 36 |
+
### 1.1 Realistischer Core Scope / Definition of Done
|
| 37 |
+
|
| 38 |
+
Das Ziel ist ein **end-to-end lauffähiger Flow mit minimalen, aber echten Komponenten**. Nicht alles auf einmal, sondern ein glaubwürdiger Kern für ca. **300 € Budget**.
|
| 39 |
+
|
| 40 |
+
**Gewünschter User Flow:**
|
| 41 |
+
|
| 42 |
+
1. Ich öffne das **UI** lokal.
|
| 43 |
+
2. Ich gebe einen Task per **Text** oder **Speech-to-Text** ein.
|
| 44 |
+
3. Ein **Router-Agent** schlägt das passende Harness vor (z. B. Claude Code / Codex / Gemini CLI / OpenCode) — mit kurzer Begründung.
|
| 45 |
+
4. Ein **Prompt-Booster** reichert den Prompt an (Kontext, Modus, Rolle).
|
| 46 |
+
5. Ich starte das gewählte Harness zunächst **manuell im Terminal** über einen vom Tower erzeugten Copy-Paste-Befehl.
|
| 47 |
+
6. Im UI sehe ich ein **Kanban-Board** meiner Projekt-Tasks, gespeist aus **GitHub Issues**.
|
| 48 |
+
|
| 49 |
+
**Akzeptanzkriterien für diesen Core:**
|
| 50 |
+
|
| 51 |
+
- UI startbar mit einem Befehl (`pnpm dev`, `make run` o. ä.)
|
| 52 |
+
- Speech-to-Text funktioniert lokal oder per API
|
| 53 |
+
- Router klassifiziert mindestens 3 Harness-Typen nachvollziehbar
|
| 54 |
+
- Prompt-Booster produziert bei gleichem Input reproduzierbaren Output
|
| 55 |
+
- Kanban-Board zeigt Issues aus mindestens 3 Repos, gruppiert nach Projekt
|
| 56 |
+
- README erklärt Clone → Setup → Run so, dass wir beide es durchspielen können
|
| 57 |
+
|
| 58 |
+
**Explizit out of scope im Core:**
|
| 59 |
+
|
| 60 |
+
- Kein Auto-Start der Harnesses aus dem UI
|
| 61 |
+
- Keine eigene DB
|
| 62 |
+
- Keine Auth / kein Multi-User
|
| 63 |
+
- Keine Session-Persistenz außer dem, was GitHub ohnehin speichert
|
| 64 |
+
|
| 65 |
+
**Bekannte Stolperfallen:**
|
| 66 |
+
|
| 67 |
+
- **V7-Pattern / Scope-Eskalation**: Neue Ideen landen in `STRETCH.md`, nicht im Sprint.
|
| 68 |
+
- **Harness-Lifecycle**: sauberes Starten/Stoppen war historisch Pain Point — deshalb im Core bewusst manuell.
|
| 69 |
+
- **GitHub Rate Limits**: `gh issue list` projektübergreifend braucht wahrscheinlich simplen Cache.
|
| 70 |
+
|
| 71 |
+
---
|
| 72 |
+
|
| 73 |
+
## 2. Schichtenbild
|
| 74 |
+
|
| 75 |
+
```
|
| 76 |
+
L4 Agent Control Tower (Cockpit) → Übersicht, Greifbarkeit
|
| 77 |
+
L4′ Focus-Mode-Taskbar (Filter) → strikter Fokus-Erzwinger
|
| 78 |
+
L3 megaHarness (Orchestrator) → Multi-Harness, Multi-Modell
|
| 79 |
+
L1 Harness-Adapter → Claude Code, OpenClaude, Codex, OpenHands, Hermes
|
| 80 |
+
L0 LLM-Provider (extern, nicht Eigen-Code)
|
| 81 |
+
```
|
| 82 |
+
|
| 83 |
+
Stand pro Schicht:
|
| 84 |
+
|
| 85 |
+
| Schicht | Stand |
|
| 86 |
+
|---|---|
|
| 87 |
+
| L4 Cockpit | existiert in drei Reifegraden parallel (siehe §3) |
|
| 88 |
+
| L4′ Focus-Mode | konzeptionell in der Vision, **nicht implementiert** |
|
| 89 |
+
| L3 megaHarness | Architektur-Doktrin gelockt (4 MD-Files), **MVP-Implementierung steckengeblieben** |
|
| 90 |
+
| L1 Adapter | deployment-fertig in `Zentrale`, fragmentiert in den anderen Versuchen |
|
| 91 |
+
| L0 | durch externe Provider abgedeckt |
|
| 92 |
+
|
| 93 |
+
---
|
| 94 |
+
|
| 95 |
+
## 3. Was schon existiert — sechs Ordner unter `/home/smlflg/Projekte/`
|
| 96 |
+
|
| 97 |
+
| Ordner | Was es ist | Stand |
|
| 98 |
+
|---|---|---|
|
| 99 |
+
| `KomandoZentral/` | Deterministische, regelbasierte Routing-Engine. CLI + FastAPI Web-UI. Python. | Deployed, Tests grün |
|
| 100 |
+
| `Zentrale/` | Multi-Agent-Supervisor (Textual TUI + FastAPI Web + CLI). Wave 1–5 gebaut, KomandoZentral-Routing eingewoben (`--use-kz`-Flag). | **Stabilstes Asset** |
|
| 101 |
+
| `FusionKomandoZentraleZentrale/` | Vier-Schritt-Minimal-Fusion (Intent → Route → Execute → Result). FastAPI Backend lokal. | MVP-fertig, 14 Tests grün, **integriert NICHT mit den anderen** |
|
| 102 |
+
| `megaHarness/` | Architektur-Doktrin in 4 Markdown-Files (siehe §6). | Doktrin gelockt, MVP-Implementierung nicht abgeschlossen |
|
| 103 |
+
| `ACT-agentcommandotower/` | Bewusst minimaler Operator-Stub: `tower.py` + `tower.yaml`. | Stub, kein Git, kein Build |
|
| 104 |
+
| `derWolfimSchafspelz/` | OpenClaude-Fork (Multi-Provider Coding-Agent CLI). | Anti-Pattern laut eigener Doktrin — gehört durch CLI-Adapter ersetzt |
|
| 105 |
+
|
| 106 |
+
Detailansicht je Ordner siehe §12 (Anhang).
|
| 107 |
+
|
| 108 |
+
---
|
| 109 |
+
|
| 110 |
+
## 4. Drei Fusionsphilosophien — warum sie nicht harmonieren
|
| 111 |
+
|
| 112 |
+
| Versuch | Philosophie | Kern-Mechanismus |
|
| 113 |
+
|---|---|---|
|
| 114 |
+
| `FusionKomandoZentraleZentrale` | Minimalistisch, intent-zentriert | Vier Schritte als Vertrag, keine Policy-Evolution, keine Swarm-Logik |
|
| 115 |
+
| `Zentrale` | Praktisch-deployed, Supervisor-Pattern, profile-basiert | Profile + Context-Packs + Phase-Routing über mehrere Harnesses |
|
| 116 |
+
| `megaHarness` | Meta-Harness über Harnesses | Schichtenmodell, Harness-Swap, adaptive .md-Datenbank als Source of Truth |
|
| 117 |
+
|
| 118 |
+
Jeder Versuch ist **intern kohärent**. Sie wurden in unterschiedlichen Phasen geboren, ohne aufeinander designt zu sein — deshalb integrieren sie nicht.
|
| 119 |
+
|
| 120 |
+
Eine deiner Kernentscheidungen wird sein: **welcher der drei Versuche wird Anker, was wird abgewickelt?** Mein Bauchgefühl sagt `Zentrale` (deploybar), aber ich will dein Urteil.
|
| 121 |
+
|
| 122 |
+
---
|
| 123 |
+
|
| 124 |
+
## 5. Doppelungen, die du kennen musst
|
| 125 |
+
|
| 126 |
+
- **Intent-Klassifizierung 3×**: in `FusionKomandoZentraleZentrale`, in `KomandoZentral/src/kz/classify.py`, und im megaHarness-Task-Router (geplant).
|
| 127 |
+
- **Harness-Routing 3×**: KomandoZentral-Confidence-Logik, Zentrale-Static-Routing, megaHarness-Policy.
|
| 128 |
+
- **Context-Pack-Generierung 1×**: nur in `Zentrale`, funktional — der einzigartige Wert dieses Projekts.
|
| 129 |
+
|
| 130 |
+
Drei verschiedene Lösungen für dasselbe Problem (Routing) sind die direkte Ursache der Integrations-Blockade.
|
| 131 |
+
|
| 132 |
+
---
|
| 133 |
+
|
| 134 |
+
## 6. Architektur-Doktrin — bitte vor dem Konsolidierungs-Plan lesen
|
| 135 |
+
|
| 136 |
+
Diese vier Dateien beschreiben, **wie ich denke**, nicht **was du tun musst**. Lies sie kursorisch. Weiche von ihnen ab, wo nötig — aber begründe Abweichungen explizit:
|
| 137 |
+
|
| 138 |
+
| Datei | Zweck |
|
| 139 |
+
|---|---|
|
| 140 |
+
| [`ARCHITECTURE.md`](./ARCHITECTURE.md) | L0–L4 Schichtenmodell, 5-Tage-MVP-Plan, Risiken & Done-Kriterien |
|
| 141 |
+
| [`Artefakt_USP.md`](./Artefakt_USP.md) | Build-vs-Integrate-Heuristik: was selbst bauen, was fremd integrieren |
|
| 142 |
+
| [`Höhlengleichnis.md`](./Höhlengleichnis.md) | Projekt-Destillation, Kategorien A/B/C/D/E/F |
|
| 143 |
+
| [`idea`](./idea) | 8-Punkt-Vision (Stichpunkte, kein Prosa) |
|
| 144 |
+
|
| 145 |
+
---
|
| 146 |
+
|
| 147 |
+
## 7. Empirische Kalibrierung — ein Datenpunkt, der Routing-Entscheidungen beeinflusst
|
| 148 |
+
|
| 149 |
+
GPT-5.4 verbrennt im Claude-Code-Harness **2–8 Millionen Input-Tokens pro Session**, bei Opus 4.7 sind es **< 20 k**. Der Output-Anteil kollabiert dabei. Empirisch belegt: [`HarnessEcosystem/docs/gpt5-4-shift-report.md`](../HarnessEcosystem/docs/gpt5-4-shift-report.md).
|
| 150 |
+
|
| 151 |
+
**Konsequenz für deinen Plan:** Der Router darf GPT-5.4 nicht standardmäßig in einen Claude-nativen Harness schicken. Diese Constraint sollte in der Topologie sichtbar sein.
|
| 152 |
+
|
| 153 |
+
---
|
| 154 |
+
|
| 155 |
+
## 8. Was du liefern sollst — explizit
|
| 156 |
+
|
| 157 |
+
**Format:** eine einzige Markdown-Datei `KONSOLIDIERUNG_LUIS.md`, abgelegt unter `/home/smlflg/Projekte/megaHarness/` (neben diesem Briefing).
|
| 158 |
+
|
| 159 |
+
**Format-Constraint:** max. 6–10 Druckseiten, scannbar, kein Code-Snippet > 10 Zeilen.
|
| 160 |
+
|
| 161 |
+
**Inhalt** — diese fünf Sektionen, in dieser Reihenfolge:
|
| 162 |
+
|
| 163 |
+
| § | Titel | Was hineingehört |
|
| 164 |
+
|---|---|---|
|
| 165 |
+
| **a** | **Anker-Empfehlung** | Welcher der drei Versuche (Zentrale / FusionKZZ / megaHarness) wird Fundament des Agent Control Tower? Mit Begründung. |
|
| 166 |
+
| **b** | **Höhlengleichnis-Verdict pro Projekt** | Für die 6 Ordner aus §3 jeweils Kategorie A/B/C/D/E/F (siehe `Höhlengleichnis.md`) zuordnen, mit 1–2 Sätzen Begründung. |
|
| 167 |
+
| **c** | **Konsolidierungs-Sequenz** | In welcher Reihenfolge wird zusammengeführt? Welche Schritte sind Voraussetzung füreinander? |
|
| 168 |
+
| **d** | **Risiken** | Was geht in der Konsolidierung verloren? Was bricht? Welche Schritte sind nicht mehr rückholbar? |
|
| 169 |
+
| **e** | **Repository-Topologie** | Wie sollte das Layout des konsolidierten Agent Control Tower aussehen? (Struktur, nicht Code.) |
|
| 170 |
+
|
| 171 |
+
---
|
| 172 |
+
|
| 173 |
+
## 9. Was du NICHT entscheiden musst
|
| 174 |
+
|
| 175 |
+
- Die megaHarness-Architektur-Doktrin (Schichtenmodell, MD-DB als Source of Truth, Build-vs-Integrate, Höhlengleichnis-Kategorien) ist mein Anker. Du darfst davon abweichen, aber bitte begründe.
|
| 176 |
+
- **Kein Code schreiben. Kein Refactor. Kein Repo neu anlegen. Nur der schriftliche Plan.**
|
| 177 |
+
- Nicht die ~80 Projekte in meinem Workspace — nur die 6 Ordner aus §3.
|
| 178 |
+
|
| 179 |
+
---
|
| 180 |
+
|
| 181 |
+
## 10. Rahmen
|
| 182 |
+
|
| 183 |
+
- **Budget:** 300 €.
|
| 184 |
+
- **N=1-Realität:** Ich bin Solo. Keine Eval-Suite mit statistischer Signifikanz. Empfehlungen sollen das berücksichtigen — keine Frontier-Lab-Annahmen.
|
| 185 |
+
- **Persönliche Schicht:** Sidecar-NG (ADHS-kompatible Hooks/Regeln) und meine Arbeitsweise sollen erhalten bleiben. Kein Wegrationalisieren der personalisierten Layer — das ist mein USP.
|
| 186 |
+
- **Endziel:** am Computer sitzen, Dinge umsetzen, die Idee verkaufen und anderen beibringen.
|
| 187 |
+
|
| 188 |
+
---
|
| 189 |
+
|
| 190 |
+
## 11. Folgeprozess
|
| 191 |
+
|
| 192 |
+
1. Du liest dieses Briefing + überfliegst die Doktrin-Files (§6).
|
| 193 |
+
2. Du sammelst offene Fragen — wenn nötig, kurzes Klär-Telefonat.
|
| 194 |
+
3. Du schreibst `KONSOLIDIERUNG_LUIS.md` gemäß §8.
|
| 195 |
+
4. Ich reviewe. Bei Iteration: annotierte Version oder Folge-Dokument.
|
| 196 |
+
|
| 197 |
+
---
|
| 198 |
+
|
| 199 |
+
## 12. Anhang — Detailansicht je Ordner
|
| 200 |
+
|
| 201 |
+
### 12.1 `KomandoZentral/`
|
| 202 |
+
|
| 203 |
+
- **Was es ist:** Deterministische, regelbasierte Routing-Engine für AI-Harnesses mit CLI und lokaler Web-UI.
|
| 204 |
+
- **Stack:** Python (uv), FastAPI, regelbasiert (kein LLM in der Routing-Logik selbst).
|
| 205 |
+
- **Top-Level-Module unter `src/kz/`:** `classify.py` (Task-Klassifizierung), `cli.py`, `service.py` (Routing-Pipeline), `web.py` (FastAPI + Web-UI, ~34 KB), `models.py`, `rules.py`, `confidence.py`, `persist.py`, `registry.py`.
|
| 206 |
+
- **Operator-State-Flags** (im CLI sichtbar): `--focus`, `--adhd-risk`, `--drift-risk`, `--energy`, `--mode`, `--cost-tolerance`. **Wichtig:** das ist die personalisierte Schicht, die erhalten bleiben muss.
|
| 207 |
+
- **DECISIONS/:** drei YAML-Dateien mit konkreten Routing-Entscheidungen — Beispiele für die Output-Form der Engine.
|
| 208 |
+
- **Beta-Doku:** [`KomandoZentral/BETA_SCOPE.md`](../KomandoZentral/BETA_SCOPE.md), [`OPENCODE_HANDOFF.md`](../KomandoZentral/OPENCODE_HANDOFF.md).
|
| 209 |
+
- **Schlüssel-Files für dich:** [`KomandoZentral/README.md`](../KomandoZentral/README.md), [`KomandoZentral/SOFTWARE_ARCHITEKTUR.md`](../KomandoZentral/SOFTWARE_ARCHITEKTUR.md), [`KomandoZentral/ECOSYSTEM_MAP.md`](../KomandoZentral/ECOSYSTEM_MAP.md).
|
| 210 |
+
|
| 211 |
+
### 12.2 `Zentrale/`
|
| 212 |
+
|
| 213 |
+
- **Was es ist:** Multi-Agent-Orchestrator im Supervisor-Pattern. Sitzt über Claude Code, Codex, OpenCode, Hermes und Gemini, routet Tasks auf den passenden Harness, injiziert projekt-/phasenspezifischen Markdown-Context.
|
| 214 |
+
- **Stack:** Python + Textual (TUI) + FastAPI (Web). JSON-Registries für Phasen/Harnesses/Profile.
|
| 215 |
+
- **Reife:** Wave 1–5 gebaut (LiveDashboard, TaskQueue, PhaseSwitcher, CostTracker, QuickRun). End-to-End `run`-Befehl orchestriert: route → context-pack → create-run → opencode → log → status. Tests grün, `validate` + `doctor` Commands existieren.
|
| 216 |
+
- **Integration mit KomandoZentral:** `--use-kz`-Flag bereits implementiert — nutzt KomandoZentrals Routing-Engine.
|
| 217 |
+
- **Stärke:** einziger Ort, an dem Context-Pack-Generierung funktional läuft.
|
| 218 |
+
|
| 219 |
+
### 12.3 `FusionKomandoZentraleZentrale/`
|
| 220 |
+
|
| 221 |
+
- **Was es ist:** Mein Versuch, die Konzepte aus KomandoZentral + Zentrale + megaHarness-Executor in eine minimale Vier-Schritt-Architektur zu fusionieren: Intent → Route → Execute → Result.
|
| 222 |
+
- **Stack:** Python, FastAPI Backend, lokale DB für Run-Records.
|
| 223 |
+
- **Komponenten:** `IntentClassifier` (nur Modus/Task-Typ), `KomandoRouter` (Intent → Phase/Harness), `FusionSystem` (Orchestrator), `Executor` (Ausführung).
|
| 224 |
+
- **Stand:** MVP-fertig, **14 Tests grün**. API-Grundgerüst (Health, Runs anlegen/abrufen, projektbezogene Runs listen).
|
| 225 |
+
- **Wo es scheiterte:** keine Erweiterung über MVP hinaus, **integriert nicht** mit KomandoZentral / Zentrale / megaHarness. CLI-Wrapper, JSON-Export, Eval-Modus geplant aber nicht implementiert.
|
| 226 |
+
- **Schlüssel-Files:** [`FusionKomandoZentraleZentrale/README.md`](../FusionKomandoZentraleZentrale/README.md), [`FusionKomandoZentraleZentrale/src/fusion_kzz/orchestrator.py`](../FusionKomandoZentraleZentrale/src/fusion_kzz/orchestrator.py).
|
| 227 |
+
|
| 228 |
+
### 12.4 `megaHarness/`
|
| 229 |
+
|
| 230 |
+
- **Was es ist:** Mein persönliches Meta-Harness als Architektur-Konzept — eine Schicht über existierenden Harnesses, die sie als austauschbare Execution-Engines orchestriert.
|
| 231 |
+
- **Inhalt:** vier Markdown-Files (siehe §6). **Keine Implementierung über die Doktrin hinaus.**
|
| 232 |
+
- **Kern-Idee:** L3 kennt L1 nur über Adapter-Interface, L2 über Resolver. Modell-Swap und Harness-Swap werden zur Config-Änderung statt Refactor.
|
| 233 |
+
- **5-Tage-MVP-Plan** liegt in `ARCHITECTURE.md` §6 — nicht abgearbeitet.
|
| 234 |
+
- **Bausteine-Status laut eigener Map:** L2 (MD-DB-Schema) ✗, L1-Adapter (Claude Code/OpenClaude) ~50 %, L3-Kernel in Arbeit, L3 (Eval-Engine, Sidecar) ✓ existiert via `HarnessEcosystem/sidebyside` und `Sidecar-ng`, L4 (UI-Ästhetik) ✓ aus `frontier-llm-harness`.
|
| 235 |
+
|
| 236 |
+
### 12.5 `ACT-agentcommandotower/`
|
| 237 |
+
|
| 238 |
+
- **Was es ist:** Minimaler lokaler Operator-Stub für agentic Projects.
|
| 239 |
+
- **Stack:** Python-Script (`tower.py`, ca. 3,5 KB, 4 Commands: `status`, `focus`, `add-decision`, `add-run`, `pause`), YAML für State (`tower.yaml`), Markdown für Docs (`focus.md`, `decisions.md`).
|
| 240 |
+
- **Bewusste Non-Goals:** keine DB, keine Web-UI, keine Hintergrundprozesse, keine autonome Orchestrierung.
|
| 241 |
+
- **Stand:** Stub, kein .git, nicht über MVP hinaus entwickelt.
|
| 242 |
+
- **Mögliche Rolle:** Inspiration für minimalen Cockpit-Layer, nicht als Code-Basis.
|
| 243 |
+
|
| 244 |
+
### 12.6 `derWolfimSchafspelz/`
|
| 245 |
+
|
| 246 |
+
- **Was es ist:** Fork-Wrapper um OpenClaude (offene Multi-Provider Coding-Agent CLI, Node.js/Bun, MIT-Lizenz). Unterstützt OpenAI-kompatible APIs, Gemini, GitHub Models, Codex, Ollama.
|
| 247 |
+
- **Anti-Pattern (laut [`Artefakt_USP.md`](./Artefakt_USP.md), Pattern A1):** Fork-als-Maintenance — Upstream bewegt sich, Fork bleibt stehen, Merge-Schulden wachsen.
|
| 248 |
+
- **Empfohlene Auflösung:** OpenClaude **nicht** forken, sondern als CLI-Spawn-Adapter aus dem Agent Control Tower nutzen. Der Fork kann dann archiviert werden.
|
| 249 |
+
|
| 250 |
+
---
|
| 251 |
+
|
| 252 |
+
## Schlusswort
|
| 253 |
+
|
| 254 |
+
Falls etwas in diesem Briefing nicht zum Telefonat passt: ruf an oder schreib. Das Telefonat war reicher als dieser Text — er ist ein Anker, kein Ersatz.
|
| 255 |
+
|
| 256 |
+
Wenn dir beim Lesen klar wird, dass du noch eine Information aus einem der Repos brauchst, die hier nicht steht: sag's, ich liefere nach. Lieber ein Klär-Round als Plan auf Annahmen.
|
| 257 |
+
|
| 258 |
+
Wenn Rückfragen offen bleiben, können wir auch kurz telefonieren.
|
| 259 |
+
|
| 260 |
+
— Samuel Fleig
|
Höhlengleichnis.md
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Höhlengleichnis — Projekt-Destillation und GH-Gegenstück-Mapping
|
| 2 |
+
|
| 3 |
+
**Zweck:** Systematisches Vorgehen, um aus Samuels ~80 Projekten (10% done, 50% 0,9-done, 40% unklar) das zu extrahieren, was echter USP ist — und das zu integrieren, was von anderen besser gebaut wurde.
|
| 4 |
+
**Gilt neben:** `ARCHITECTURE.md`, `Artefakt_USP.md`
|
| 5 |
+
**Metapher:** Platons Höhlengleichnis. Unfertige Projekte = Schatten an der Wand. Die saubere Umsetzung des gleichen Gedankens im GH-Ökosystem = die Idee außerhalb der Höhle. Die Aufgabe: erkennen, was Schatten ist, was eigene Idee, und welche Ideen jemand anderes schon sauberer aus der Höhle rausgetragen hat.
|
| 6 |
+
|
| 7 |
+
---
|
| 8 |
+
|
| 9 |
+
## 0. Kernsatz
|
| 10 |
+
|
| 11 |
+
> **Nicht jeder unfertige Gedanke muss selbst zu Ende gebaut werden. Die meisten deiner Projekte sind Beweise, dass du einen bestimmten Bedarf erkannt hast. In einigen Fällen hat jemand diesen Bedarf sauberer gelöst, als du es je würdest. Deine Arbeit ist dann: den Bedarf klar benennen, das fremde Repo integrieren, und deine Personalisierung darüberlegen.**
|
| 12 |
+
|
| 13 |
+
Die Voraussetzung für diese Entscheidung ist der **destillierte Seed** — der eine Satz, der den Kern deines Projekts beschreibt, losgelöst von Code und Projektnamen.
|
| 14 |
+
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
## 1. Der Prozess in vier Phasen
|
| 18 |
+
|
| 19 |
+
```
|
| 20 |
+
Phase 1: Destillation → Seed (1–2 Sätze pro Projekt)
|
| 21 |
+
Phase 2: Gegenstück-Suche → 0–N GH-Repos mit ähnlichem Seed
|
| 22 |
+
Phase 3: Matching-Urteil → Entscheidungs-Kategorie (siehe §5)
|
| 23 |
+
Phase 4: Aktions-Routing → Finishen / Integrieren / Streichen / Kombinieren
|
| 24 |
+
```
|
| 25 |
+
|
| 26 |
+
Jede Phase hat ein eigenes Artefakt in der MD-DB unter `md-db/projects/<slug>/`:
|
| 27 |
+
- `seed.md` — das Destillat
|
| 28 |
+
- `gh-matches.md` — Kandidaten aus der Gegenstück-Suche
|
| 29 |
+
- `verdict.md` — das Matching-Urteil mit Begründung
|
| 30 |
+
- `action.md` — was konkret getan wird
|
| 31 |
+
|
| 32 |
+
---
|
| 33 |
+
|
| 34 |
+
## 2. Phase 1 — Destillations-Template
|
| 35 |
+
|
| 36 |
+
Für jedes Projekt wird **ein einziger Satz** produziert, nach folgendem Template:
|
| 37 |
+
|
| 38 |
+
> **„[Projektname] existiert, weil es [Bedarf] löst, indem es [Kern-Mechanismus] tut — und zwar speziell für [Nutzer / Kontext]."**
|
| 39 |
+
|
| 40 |
+
Beispiele (konstruiert):
|
| 41 |
+
- „`PromptGarage` existiert, weil fragmentierte Prompts unauffindbar werden, indem es Prompts als versionierte MD-Files mit Frontmatter organisiert — speziell für Solo-Developer mit vielen Modellen."
|
| 42 |
+
- „`SidecarDashboard` existiert, weil Sidecar-Events nicht sichtbar sind, indem es Hook-Payloads live rendert — speziell für ADHS-kompatibles Arbeiten."
|
| 43 |
+
|
| 44 |
+
**Regeln für den Satz:**
|
| 45 |
+
1. Maximal 30 Wörter.
|
| 46 |
+
2. Keine Feature-Aufzählung.
|
| 47 |
+
3. Kein „etc.".
|
| 48 |
+
4. Wenn du den Satz nicht schreiben kannst: das Projekt ist entweder noch nicht existent (bloß ein Ordner) **oder** gehört in die Strich-Liste (§5 Kategorie D).
|
| 49 |
+
|
| 50 |
+
**Output:** `md-db/projects/<slug>/seed.md` mit Frontmatter `status: draft | confirmed | stale`.
|
| 51 |
+
|
| 52 |
+
---
|
| 53 |
+
|
| 54 |
+
## 3. Phase 2 — Gegenstück-Suche
|
| 55 |
+
|
| 56 |
+
**Ziel:** Finde 0–N GH-Repos, deren `seed` semantisch deinem `seed` entspricht.
|
| 57 |
+
|
| 58 |
+
### 3.1 Such-Heuristiken
|
| 59 |
+
|
| 60 |
+
1. **Keywords aus dem Seed** in GH-Search: Bedarf + Mechanismus, nicht Projektname.
|
| 61 |
+
2. **Awesome-Listen** der nächstliegenden Domäne durchgehen (z.B. `awesome-llm-agents`, `awesome-markdown-tools`).
|
| 62 |
+
3. **Hacker-News-Suche** auf den Bedarf (nicht auf Lösungen) — News hat oft Diskussionen über ähnliche Probleme.
|
| 63 |
+
4. **Papers-with-Code** für Repos mit Forschungshintergrund.
|
| 64 |
+
5. **Cross-Reference:** wenn du bereits ein Repo kennst, das nah ist, schau dessen „Similar Repos" und Stargazer-Empfehlungen an.
|
| 65 |
+
|
| 66 |
+
### 3.2 Qualitäts-Filter für Kandidaten
|
| 67 |
+
|
| 68 |
+
Ein Repo ist ein relevanter Kandidat, wenn mindestens **drei** der folgenden Kriterien erfüllt sind:
|
| 69 |
+
- Aktiv maintained (Commit in den letzten 6 Monaten)
|
| 70 |
+
- Mehr als 100 Stars **oder** klar publiziert mit Dokumentation
|
| 71 |
+
- Installierbar/lauffähig ohne Spezial-Setup
|
| 72 |
+
- Abstraktions-Modell passt zu deinem Denken (keine Ideologie-Kollision — siehe Anti-Pattern A5 in Artefakt_USP)
|
| 73 |
+
- Lizenz kompatibel (MIT / Apache-2 / BSD — nicht AGPL ohne Prüfung)
|
| 74 |
+
|
| 75 |
+
### 3.3 Anti-Kriterien (disqualifizieren sofort)
|
| 76 |
+
|
| 77 |
+
- Enterprise-SaaS ohne Self-Host-Option
|
| 78 |
+
- Abhängig von proprietärem Stack, den du nicht nutzt
|
| 79 |
+
- Tote Repos (letzter Commit > 2 Jahre)
|
| 80 |
+
- Wrappers um andere Tools, die selbst die bessere Wahl wären
|
| 81 |
+
|
| 82 |
+
**Output:** `md-db/projects/<slug>/gh-matches.md` mit Tabelle: Repo-URL, Stars, Last-Commit, Seed-Match-Bewertung (1–5), Lizenz, Notiz.
|
| 83 |
+
|
| 84 |
+
---
|
| 85 |
+
|
| 86 |
+
## 4. Phase 3 — Matching-Urteil
|
| 87 |
+
|
| 88 |
+
Für jedes Projekt wird **genau eine** Kategorie vergeben:
|
| 89 |
+
|
| 90 |
+
| Kategorie | Definition | Aktion |
|
| 91 |
+
|---|---|---|
|
| 92 |
+
| **A — Original** | Kein adäquates GH-Gegenstück existiert; dein Seed ist genuin | Selbst finishen, zu megaHarness integrieren |
|
| 93 |
+
| **B — Schlechter Schatten** | GH-Gegenstück existiert, aber schlechter als deins | Selbst finishen, optional später als eigenes Repo publizieren |
|
| 94 |
+
| **C — Besserer Schatten** | GH-Gegenstück existiert, ist deutlich sauberer | Eigenes Projekt archivieren; GH-Repo als Adapter-Target integrieren |
|
| 95 |
+
| **D — Schatten ohne Idee** | Seed lässt sich nicht destillieren, Projekt war nie klar | Streichen, Lernen notieren, zur Ruhe kommen lassen |
|
| 96 |
+
| **E — Komplementär** | GH-Gegenstück existiert, aber du deckst andere Axe ab | Beide behalten, Verbindung skizzieren |
|
| 97 |
+
| **F — Vor-Entscheidung nötig** | Seed klar, GH-Kandidat klar, aber Entscheidung hängt an nicht-getesteten Annahmen | Annahme als Mini-Experiment validieren, dann erneut entscheiden |
|
| 98 |
+
|
| 99 |
+
### Begründungs-Pflicht
|
| 100 |
+
|
| 101 |
+
Jedes Urteil braucht eine Begründung in `verdict.md`, die auf folgende drei Fragen antwortet:
|
| 102 |
+
1. Was genau macht das GH-Repo besser/schlechter/anders?
|
| 103 |
+
2. Welche Personalisierungs-Schicht (Samuel-spezifisch) wäre bei Kategorie C noch nötig?
|
| 104 |
+
3. Welche Annahme könnte dieses Urteil kippen, wenn sie falsch ist?
|
| 105 |
+
|
| 106 |
+
---
|
| 107 |
+
|
| 108 |
+
## 5. Phase 4 — Aktions-Routing
|
| 109 |
+
|
| 110 |
+
| Kategorie | Token-Budget-Anteil | Zeit-Horizont |
|
| 111 |
+
|---|---|---|
|
| 112 |
+
| A — Original | Hoch — hier steckt USP | MVP-relevante zuerst, Rest Post-MVP |
|
| 113 |
+
| B — Schlechter Schatten | Mittel — nur finishen was du auch nutzt | Post-MVP |
|
| 114 |
+
| C — Besserer Schatten | **Niedrig** — nur Adapter-Aufwand | MVP-relevante wenn Baustein, sonst später |
|
| 115 |
+
| D — Schatten ohne Idee | **Null** — aktives Loslassen | Sofort streichen (`archived/`-Ordner, nicht löschen) |
|
| 116 |
+
| E — Komplementär | Mittel — Verbindung dokumentieren | Post-MVP |
|
| 117 |
+
| F — Vor-Entscheidung | Klein — nur Experiment, keine Implementierung | Vor jedem größeren Commit |
|
| 118 |
+
|
| 119 |
+
**Wichtig:** Kategorie D ist nicht Scheitern. Das sind Erkenntnis-Artefakte. Jeder Ordner, der dort landet, bekommt vorher eine kurze `lesson.md`: was war der Reiz, was war der Hinderungsgrund, was würdest du heute anders wissen. Das ist das eigentliche Ergebnis solcher Projekte.
|
| 120 |
+
|
| 121 |
+
---
|
| 122 |
+
|
| 123 |
+
## 6. Anwendungsplan für 80 Projekte
|
| 124 |
+
|
| 125 |
+
Die Bearbeitung aller 80 Projekte manuell ist 80 × (Destillation + Suche + Urteil) ≈ 80 × 30min = 40h. Das ist ein eigenes Projekt.
|
| 126 |
+
|
| 127 |
+
### 6.1 Priorisierungs-Heuristik
|
| 128 |
+
|
| 129 |
+
Nicht alle 80 gleich behandeln. Sortiere vor der Destillation in drei Schichten:
|
| 130 |
+
|
| 131 |
+
| Schicht | Kriterium | Zuerst destillieren? |
|
| 132 |
+
|---|---|---|
|
| 133 |
+
| **S1 — Aktiv** | Hast du in den letzten 4 Wochen daran gearbeitet? | Ja, zuerst |
|
| 134 |
+
| **S2 — Fast-fertig** | Der 50%-0,9-done-Block | Ja, als zweites |
|
| 135 |
+
| **S3 — Schlafend** | Alles andere | Batch-Destillation via Agent-Team, später |
|
| 136 |
+
|
| 137 |
+
### 6.2 Parallelisierung
|
| 138 |
+
|
| 139 |
+
S3 (wahrscheinlich 30–40 Projekte) ist prädestiniert für einen **Sonnet-Background-Agent pro Projekt-Cluster**, der die Destillation automatisiert vorschlägt. Samuel reviewt Seeds, nicht schreibt sie.
|
| 140 |
+
|
| 141 |
+
Pro Agent: 3–5 Projekte, Input = README + Ordner-Listing, Output = `seed.md` im Draft-Status. Samuel confirmed/edited.
|
| 142 |
+
|
| 143 |
+
**Das ist die richtige Stelle für den „Unleash the Beast"-Modus**, wenn Samuel ihn nutzen will: S3 in 10–15 Parallel-Agenten destillieren, in einem halben Tag fertig.
|
| 144 |
+
|
| 145 |
+
### 6.3 Integration in 5-Tage-MVP
|
| 146 |
+
|
| 147 |
+
**Nicht** alle 80 Projekte gehören in den MVP. Der MVP braucht nur:
|
| 148 |
+
- Die Destillations-Pipeline als Prozess-Dokument (existiert jetzt)
|
| 149 |
+
- Eine MD-DB-Struktur, die die 4 Artefakte pro Projekt aufnehmen kann (ist in §1 definiert)
|
| 150 |
+
- 3–5 Beispiel-Destillationen als Proof
|
| 151 |
+
|
| 152 |
+
Die Batch-Destillation der restlichen ~75 Projekte ist Post-MVP-Arbeit.
|
| 153 |
+
|
| 154 |
+
---
|
| 155 |
+
|
| 156 |
+
## 7. Anti-Patterns (wo die Metapher schiefläuft)
|
| 157 |
+
|
| 158 |
+
### H1 — Höhlen-Romantik
|
| 159 |
+
Die Metapher „draußen ist die Idee, drinnen der Schatten" suggeriert, dass fremd automatisch besser ist. Falsch. Viele GH-Repos sind selbst Schatten anderer Ideen — nur lauter publiziert.
|
| 160 |
+
**Gegenmittel:** Qualitäts-Filter §3.2 ist Pflicht, nicht Kür.
|
| 161 |
+
|
| 162 |
+
### H2 — Destillations-Perfektionismus
|
| 163 |
+
Stunden für den „perfekten Seed-Satz" eines Projekts, das ohnehin in Kategorie D gehört.
|
| 164 |
+
**Gegenmittel:** 10-Minuten-Timer pro Projekt. Wenn nach 10 Minuten kein Seed-Satz existiert: Projekt ist Kategorie D.
|
| 165 |
+
|
| 166 |
+
### H3 — Falsche Originalität
|
| 167 |
+
Behauptung „meins ist anders", obwohl GH-Repo denselben Bedarf sauberer löst, nur weil das fremde Repo eine andere Oberflächen-Terminologie nutzt.
|
| 168 |
+
**Gegenmittel:** Seed vergleichen, nicht UI. Wenn Seeds ≈ gleich sind, dann ist es Kategorie C, egal wie die Oberflächen aussehen.
|
| 169 |
+
|
| 170 |
+
### H4 — Sunk-Cost-Blockade
|
| 171 |
+
Widerwillen, ein 90%-done-Projekt nach Kategorie C/D zu schicken, weil „ich habe schon so viel investiert".
|
| 172 |
+
**Gegenmittel:** Die investierte Zeit ist der Preis der Erkenntnis. Sie ist bereits bezahlt. Die Frage ist nur, ob die nächsten 10% sich lohnen. Meistens: nein, wenn C/D zutrifft.
|
| 173 |
+
|
| 174 |
+
### H5 — Schnelle Integration ohne Personalisierung
|
| 175 |
+
Ein besseres GH-Repo gefunden → einfach installieren und benutzen, ohne die Samuel-spezifische Schicht darüberzulegen.
|
| 176 |
+
**Gegenmittel:** Kategorie C braucht zwingend einen Eintrag „Personalisierungs-Schicht" in `verdict.md`. Ohne den Schritt verlierst du den Grund, warum du es überhaupt gebaut hättest.
|
| 177 |
+
|
| 178 |
+
---
|
| 179 |
+
|
| 180 |
+
## 8. Beispiel (exemplarisch durchgespielt)
|
| 181 |
+
|
| 182 |
+
### Projekt: `PromptGarage`
|
| 183 |
+
|
| 184 |
+
**Phase 1 — Destillation:**
|
| 185 |
+
> PromptGarage existiert, weil fragmentierte Prompts über Modelle und Sessions unauffindbar werden, indem es Prompts als versionierte MD-Files mit Frontmatter-Metadaten organisiert — speziell für Solo-Developer, die mehrere Modelle und Harnesses bedienen.
|
| 186 |
+
|
| 187 |
+
**Phase 2 — Gegenstück-Suche (Kandidaten):**
|
| 188 |
+
- `promptfoo/promptfoo` — Eval + Versioning, nicht pures Storage
|
| 189 |
+
- `langfuse/langfuse` — SaaS-fokussiert, zu schwer für Solo
|
| 190 |
+
- `humanloop/humanloop` — kommerzielle Plattform
|
| 191 |
+
- `OpenPromptbook` (diverse Forks) — statische Sammlungen, nicht versioniert
|
| 192 |
+
- Eigene Ordner-Struktur `~/prompts/*.md` — genau das, was du baust
|
| 193 |
+
|
| 194 |
+
**Phase 3 — Matching-Urteil:** Kategorie **A (Original)** oder **E (Komplementär)** — keine der gefundenen Lösungen tut genau „versionierte MD-Files mit Frontmatter für Solo-Dev". Am nächsten: promptfoo, aber mit anderem Fokus (Eval).
|
| 195 |
+
|
| 196 |
+
**Phase 4 — Aktions-Routing:** Als MD-DB-Kern-Komponente in megaHarness integrieren. PromptGarage wird nicht „fertig gemacht", sondern **wird** die MD-DB. Der Name kann bleiben oder fallen.
|
| 197 |
+
|
| 198 |
+
*(Dieses Beispiel ist Illustration, kein endgültiges Urteil. Die echte Destillation macht Samuel.)*
|
| 199 |
+
|
| 200 |
+
---
|
| 201 |
+
|
| 202 |
+
## 9. Integration mit Artefakt_USP-Doktrin
|
| 203 |
+
|
| 204 |
+
Das Höhlengleichnis ist der **Prozess**, der die Doktrin umsetzt:
|
| 205 |
+
- Artefakt_USP sagt: *„Baue eigen nur was USP ist, importiere fremd wo commodity."*
|
| 206 |
+
- Höhlengleichnis sagt: *„Für jedes Projekt finde heraus, welche Kategorie gilt, systematisch."*
|
| 207 |
+
|
| 208 |
+
Jedes `verdict.md` ist ein Anwendungs-Fall der Doktrin. Sammeln sich viele Kategorie-C-Urteile in einer Domäne, ist das ein Signal, dass dort das Ökosystem reif ist und Selbstbau generell verschwendete Zeit wäre. Umgekehrt: viele Kategorie-A in einer Domäne heißt, da ist echter Nischen-Wert.
|
| 209 |
+
|
| 210 |
+
---
|
| 211 |
+
|
| 212 |
+
## 10. Review-Trigger
|
| 213 |
+
|
| 214 |
+
Diese Methode wird geprüft, wenn:
|
| 215 |
+
- Nach 10 durchlaufenen Projekten: stimmt die Kategorie-Verteilung mit dem Gefühl überein?
|
| 216 |
+
- Ein Kategorie-D-Projekt erneut auftaucht (gleicher Seed, neuer Anlauf) — dann ist entweder das D-Urteil falsch oder der Seed falsch destilliert.
|
| 217 |
+
- Ein Kategorie-C-GH-Repo verschwindet oder unmaintained wird — dann wird es zu F oder kippt in A.
|
| 218 |
+
|
| 219 |
+
---
|
| 220 |
+
|
| 221 |
+
**Dieses Artefakt ist dein Weg aus der Höhle. Nicht jede Idee muss dein Code sein. Nicht jedes fremde Repo muss deine Idee ersetzen. Die Kunst ist die Unterscheidung, und die Unterscheidung ist hier operationalisiert.**
|
idea
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
1. Harness-agnostisch — kann Claude Code, OpenClaude, Codex, Cursor, OpenHands etc. als Execution-Layer orchestrieren
|
| 2 |
+
2. Modell-agnostisch — Opus, GPT‑5.4, Sonnet, Gemini, Minimax austauschbar pro Track
|
| 3 |
+
3. .md-Datenbank als Source-of-Truth — alle Instructions, CLAUDE.md, Skills, Sidecar-Regeln, Projekt-Briefs als versioniertes Markdown, adaptiv (kontextabhängig geladen)
|
| 4 |
+
4. Parallel-native — mehrere Tracks gleichzeitig, nicht sequenziell
|
| 5 |
+
5. Eval-integriert — jeder Track misst sich selbst (Token/Turn, Completion, Quality-Labels), Ergebnisse fließen zurück in die .md-DB
|
| 6 |
+
6. Integriert eigene + fremde Projekte — also Adapter-Layer für externe Repos, nicht nur für Samuels Code
|
| 7 |
+
7. Samuel-optimiert — ADHS-kompatibel, Sidecar-logik-native, kurze Feedback-Loops
|
| 8 |
+
8. UI — sichtbar, nicht nur CLI. Dashboard für Tracks, Status, Metriken
|
| 9 |
+
|
| 10 |
+
Das ist keine Kleinigkeit — das ist im Grunde ein Produkt, nicht ein Config-Job. Was du beschreibst überlappt stark mit Devin + LangSmith + ein Eval-Framework + ein
|
| 11 |
+
Markdown-CMS — alles in einem.
|
| 12 |
+
|
| 13 |
+
Was das für den 5-Tage-Plan heißt
|
| 14 |
+
|
| 15 |
+
Dein „fertig" ist nicht in 5 Tagen erreichbar aus dem Stand. Aber ein lauffähiger Kern, auf dem du weiterbaust, ist drin:
|
| 16 |
+
|
| 17 |
+
- Tag 1: OpenHands als Execution-Engine läuft (dein „Motor"). Gleichzeitig: .md-DB-Struktur definiert (einfach: ~/.harness/md-db/ mit projects/, instructions/, evals/,
|
| 18 |
+
tracks/).
|
| 19 |
+
- Tag 2: Adapter-Layer: dünne Python-Shell die aus .md-Einträgen Track-Configs generiert und an OpenHands/Claude Code/Codex weiterreicht. Das ist dein
|
| 20 |
+
„harness-agnostisch".
|
| 21 |
+
- Tag 3: Parallel-Queue (Temporal/Dagger oder simpler: tmux + Prefect). 3 Tracks gleichzeitig.
|
| 22 |
+
- Tag 4: Eval-Hooks — pro Track werden Metriken nach Abschluss in die .md-DB zurückgeschrieben.
|
| 23 |
+
- Tag 5: UI — einfachster Weg: statische HTML-SPA die die .md-DB rendert (dein frontier-llm-harness und sidebyside sind genau das Muster). Oder: Streamlit/Gradio.
|