This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/docs/intent/board-research-trigger-column-config.md
pijukka 05575df408 docs: commit backlog of already-resolved intent/review corpus files
board-agent's own README documents docs/intent/ and docs/research-intent/
as tracked corpus directories, and docs/review/<slug>.md as the reviewer's
persisted report per card - but the pipeline only writes these files to
the checkout, it never commits them itself. This had built up a backlog
of intent/review docs for cards already marked deployed or archiviert in
the live board state, which were sitting uncommitted in the working tree.

Adds that backlog as-is: the originating intents, their reviewer reports,
the research-intent/research pair for the board UX evaluation, and one
standalone process-retrospective report (board-review-pipeline-context-
overhead.md, same genre as the two already-tracked audit reports in
docs/review/). No code changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7UVrKsttMP9a6FiGFna9b
2026-09-10 12:06:53 +02:00

85 lines
4.1 KiB
Markdown

# Intent: Research-Spalten-Konfiguration bei Drag und Ausführung anwenden
## Ziel
Wird eine Karte per Drag von `recherche_angefordert` nach
`recherche_laeuft` gezogen, liest `trigger.py` die dann gespeicherte
`column_config["recherche_laeuft"]` (Runtime, Modell, Reasoning-Effort)
statt nur der globalen `board_runtime()` und legt sie im Job-Payload
ab; `worker.py`s `run_research()` nimmt diese Werte entgegen und
verwendet sie statt der bisher rein Env-Var-basierten Researcher-
Defaults (`BOARD_RESEARCHER_CODEX_MODEL` u. a.).
## Umfang
- `board-agent/trigger.py`, `update_phase()`, Zweig `new_phase ==
"recherche_laeuft"` (aktuell Zeile 545-552): analog zum
Builder-Trigger `config = load_column_config()["recherche_laeuft"]`
lesen und `write_job(..., job_type="research", runtime=config["runtime"],
**extra)` mit `extra` nur für nicht-leere `model`/`reasoning_effort`
füllen (gleiche Semantik wie in `board-builder-trigger-column-config`
beschrieben — leere Werte dürfen nicht als explizite leere
Zeichenkette im Payload landen).
- `board-agent/worker.py`:
- `run_research(slug, research_intent_path, runtime="codex",
model=None, reasoning_effort=None)` (aktuell Zeile 638) um die
beiden neuen optionalen Parameter erweitern.
- Die beiden `append_model_options(...)`-Aufrufe (Codex-Zweig, Zeile
660-664) bzw. `append_claude_model_options(command)`
(Claude-Zweig, Zeile 695) so anpassen, dass bei gesetztem
`model`/`reasoning_effort`-Parameter dieser statt des bisherigen
`os.environ.get("BOARD_RESEARCHER_CODEX_MODEL", "")` bzw. des
Claude-Env-Var-Defaults verwendet wird — `model`/`reasoning`
bleiben `None`, wenn der Aufrufer nichts übergibt, sodass der
bestehende Env-Var-Fallback exakt wie bisher greift.
- `process_job()`s `research`-Zweig (aktuell um Zeile 861-915) liest
`payload.get("model")`/`payload.get("reasoning_effort")` und
reicht sie an `run_research(...)` durch.
- `board-agent/test_board_agent.py`: Test, der
`column_config["recherche_laeuft"]` vor dem Drag setzt und prüft,
dass der resultierende Job-Payload die Felder enthält; sowie ein
Test für `run_research()` mit explizitem `model`/`reasoning_effort`
gegenüber dem bisherigen reinen Env-Var-Verhalten (z. B. per
Monkeypatch/Fake-Subprocess wie in den bestehenden Tests für
`run_research()`, falls vorhanden).
## Explizit ausgeschlossen
- Kein Iterationslimit für Research — es existiert kein Analogon zu
`AGENT_BUILDER_ITERATION_LIMIT` im Research-Pfad, daher kein
entsprechendes Feld.
- Keine Änderung an `agent-codex/builder.py` — Research läuft
vollständig innerhalb von `worker.py`, es gibt keine Weitergabe an
einen separaten Agenten-Prozess wie beim Builder.
- Kein UI (Scope von `board-column-config-frontend-headers`).
- Keine Änderung an Builder- oder Review-Pfaden.
## Annahmen
- `board-column-config-backend-state` ist bereits gemergt.
- Die bisherigen Env-Vars `BOARD_RESEARCHER_CODEX_MODEL`/
`BOARD_RESEARCHER_CODEX_REASONING_EFFORT` sowie das entsprechende
Claude-Pendant bleiben als Fallback-Default bestehen, wenn
`column_config["recherche_laeuft"]` keinen Override enthält.
## Offene Risiken / offene Fragen
- `append_claude_model_options()` liest ihren Claude-Env-Var-Default
aktuell aus den globalen `AGENT_BUILDER_CLAUDE_MODEL`/
`AGENT_BUILDER_CLAUDE_REASONING_EFFORT`-Namen (siehe `common.py`
Zeile 421-436), nicht aus researcherspezifischen Namen wie beim
Codex-Zweig — vorhandene Asymmetrie im bestehenden Code, die dieses
Intent nicht auflöst, nur respektiert (expliziter Parameter aus
`column_config` überschreibt in beiden Fällen unabhängig vom
jeweiligen Env-Var-Namen).
## Erfolgskriterien
- Eine Karte, die mit einer vom Default abweichenden
`column_config["recherche_laeuft"]`-Konfiguration nach
`recherche_laeuft` gezogen wird, löst einen Research-Lauf mit genau
diesem Modell/Reasoning-Effort aus (verifizierbar am tatsächlich
aufgerufenen Kommando bzw. an einem Test mit Fake-Subprocess).
- Unveränderte Default-Konfiguration führt zu identischem Verhalten
wie vor diesem Intent (Env-Var-Fallback).
- Bestehende Research-Tests bleiben grün, neue Tests sind grün.