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

4.1 KiB

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.pys 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.