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
85 lines
3.8 KiB
Markdown
85 lines
3.8 KiB
Markdown
# Intent: Shell-Fähigkeit für den Researcher (blunix, Claude-Pfad)
|
|
|
|
## Ziel
|
|
|
|
Der Researcher (`agents/researcher.md`) kann bei Board-getriggerten wie
|
|
interaktiven Aufträgen laufende Dienste auf blunix einsehen (Logs,
|
|
Service-Status, Ressourcennutzung), nicht nur den statischen Repo-Stand
|
|
und externe Web-Quellen.
|
|
|
|
## Umfang / Auftrag an den Builder
|
|
|
|
- `agents/researcher.md`: im Abschnitt "Arbeitsgrenzen und Sicherheit"
|
|
einen neuen Absatz nach dem Muster des bestehenden Web-Zugriffs-Absatzes
|
|
ergänzen, der Shell-Ausführung als neue, ausdrücklich begrenzte
|
|
Fähigkeit einführt: (a) nur auf dem Host blunix, kein SSH zu pinix,
|
|
tnix oder anderen Hosts, (b) ausschließlich zur Informationsbeschaffung,
|
|
nie zur Zustandsänderung, (c) die einzige Schreibaktion der Rolle bleibt
|
|
unverändert `docs/research/<slug>.md`.
|
|
- Im Abschnitt "Rechercheablauf" ergänzen: bei Fragen zum Live-Zustand der
|
|
Plattform sind Shell-Befehle auf blunix eine dritte zulässige Quelle
|
|
neben Repository und Web.
|
|
- `agents/claude-settings/researcher.json`: der `allow`-Liste einen
|
|
generischen Bash-Eintrag hinzufügen (kein Befehls-Allowlisting nach
|
|
Präfix). Der `deny`-Liste gezielt folgende Präfixe hinzufügen, zusätzlich
|
|
zum bereits vorhandenen `Bash(ssh *)`: `Bash(sudo *)`, `Bash(rm *)`,
|
|
`Bash(mv *)`, `Bash(chmod *)`, `Bash(chown *)`, `Bash(kill *)`,
|
|
`Bash(systemctl start *)`, `Bash(systemctl stop *)`,
|
|
`Bash(systemctl restart *)`, `Bash(systemctl enable *)`,
|
|
`Bash(systemctl disable *)`, `Bash(nixos-rebuild switch *)`,
|
|
`Bash(nixos-rebuild test *)`, `Bash(reboot*)`, `Bash(shutdown *)`,
|
|
`Bash(agenix *)`. Bereits vorhandene Einträge (`git commit *`,
|
|
`git push *`, `ssh *`) bleiben unverändert stehen.
|
|
|
|
## Scope-Einschränkung
|
|
|
|
Diese Karte aktiviert Shell-Ausführung ausschließlich für den
|
|
Claude-Runtime-Pfad. Der Codex-Pfad bleibt unverändert ohne
|
|
Shell-Fähigkeit, weil Codex unter `--sandbox read-only` keine Shell-Befehle
|
|
ausführen kann und `--sandbox workspace-write` laut
|
|
`board-agent/README.md` ("Why read-only, not a scoped writable dir")
|
|
nachweislich nicht pfadgenau einschränkt. Codex-Unterstützung ist ein
|
|
bewusst ausgeschlossenes Folge-Intent.
|
|
|
|
## Ausgeschlossen
|
|
|
|
- SSH oder jeder andere Zugriff auf pinix, tnix oder weitere Hosts.
|
|
- Aktivierung der Shell-Fähigkeit für den Codex-Pfad.
|
|
- Änderungen an `worker.py`, `trigger.py`, `board.html` oder
|
|
`board-agent.nix` (folgen in separaten Karten).
|
|
- Änderungen an anderen Rollen-Dateien oder anderen
|
|
`agents/claude-settings/*.json`.
|
|
- Eine feste Befehls-Allowlist anstelle der gewählten Deny-Präfix-Liste
|
|
(siehe Annahmen).
|
|
|
|
## Annahmen
|
|
|
|
- "Read-only" ist hier eine Konvention über eine Deny-Präfix-Liste, keine
|
|
harte OS-Sandbox: ein board-getriggerter Researcher-Lauf läuft als
|
|
Linux-User `drone`, demselben Nutzer wie die interaktive Admin-Session.
|
|
Der Researcher hat real dieselben Rechte wie `drone`, abzüglich der
|
|
gesperrten Präfixe.
|
|
- Dieselbe erweiterte Fähigkeit gilt gleichermaßen für eine interaktive
|
|
Herdr-Pane-Nutzung des Researchers, da beide Aufrufwege dieselbe Rollen-
|
|
und Settings-Datei lesen.
|
|
|
|
## Offene Risiken
|
|
|
|
- Eine Präfix-Denyliste ist nicht vollständig: Kettenoperatoren (`&&`,
|
|
`;`, `|`), ungewöhnliche Schreibweisen oder Skripte, die intern `sudo`
|
|
aufrufen, können sie umgehen. Dieses Risiko bleibt nach dieser Karte
|
|
bewusst offen.
|
|
|
|
## Tests
|
|
|
|
- `agents/claude-settings/researcher.json` bleibt valides JSON.
|
|
- Der neue Bash-Allow-Eintrag und alle genannten Deny-Präfixe sind
|
|
vorhanden, bestehende Einträge unverändert.
|
|
|
|
## Erfolgskriterien
|
|
|
|
- Ein Researcher-Lauf (Claude-Pfad) kann auf blunix z. B. `journalctl`
|
|
oder `systemctl status` ausführen.
|
|
- Derselbe Lauf kann keinen der explizit gesperrten Befehle ausführen.
|
|
- `agents/researcher.md` benennt die neue Fähigkeit und ihre Grenzen (nur
|
|
blunix, nur Claude-Pfad, nur Recherche) ausdrücklich.
|