Commit Graph
167 Commits
Author SHA1 Message Date
RichardandClaude Opus 5.5 9a265888f8 Werkzeugkasten: Zugangsdaten je Einheit (#692)
A unit holds credentials for its members, by tool and setting - needed once,
not once per agent, and other units never get them.

- UnitConfig.credentials, protected by ConfigSecrets like every secret.
- OrgChart.ToolSettingsFor: an agent's own settings, completed by the nearest
  unit up that holds the value; own non-empty values win; no tool is granted.
  Used for runs, tool jobs and preflight probes.
- OrgAdministration.SetUnitCredential, PUT /organisation/units/{id}/credentials;
  the view lists held settings, never values.
- Templates never carry unit credentials; they are named instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:50:27 +02:00
RichardandClaude Opus 5.5 661807b2d0 Merge feat/691-org-templates: Organisationsvorlagen (#691)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:46:22 +02:00
RichardandClaude Opus 5.5 706b5cfd9e Organisationsvorlagen: ein ganzes Haus als importierbare Datei (#691)
- Core/Organisation/OrgTemplate: format, export, parse, structural checks.
  Export empties every credential (nested, name variants) and names it;
  a template that carries one is refused.
- OrgAdministration: ExportTemplate, PreviewTemplate (problems, warnings,
  every text in full), ImportTemplateAsync - only with confirmation, units
  before agents, own workspace per unit, doctrines, model and budget factor
  overridable, templateOrigin on every unit and agent.
- Endpoints GET /organisation/template, POST .../preview, POST .../import;
  templates card in the organisation view.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:37:18 +02:00
RichardandClaude Opus 5.5 11465f3d74 Merge feat/702-votes: Abstimmung (#702)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:12:21 +02:00
RichardandClaude Opus 5.5 a5dd503d9b Abstimmung: mehrere Agenten pruefen unabhaengig und stimmen blind ab (#702)
A unit can put operations to a blind vote instead of its lead. Not opinions
are counted but independent checks enforced.

- UnitConfig.votes: operations, voters, approveAt, rejectAt, quorum, hours,
  perDay - set only by a human (OrgAdministration.SetVotes).
- Core/Staging/Votes: routes a covered staged call before the lead; one task
  per voter with the frozen call and nothing else; cast_vote needs reasoning
  and evidence. Counted as soon as the result is settled; in between and
  without the quorum a human decides. The proposer does not vote, voters that
  read foreign content get no ballot, changes to agents never go to a vote.
- Escalation tool: list_ballots, cast_vote.
- Approvals view shows each vote with every ballot and the voters' costs;
  organisation view sets the rule and lists the votes held.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:04:33 +02:00
RichardandClaude Opus 5.5 d834e5ac38 Merge feat/693-spot-checks: Kontrollpflicht der Leitung (#693)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:55:24 +02:00
RichardandClaude Opus 5.5 68e723a9c0 Kontrollpflicht der Leitung: Stichproben gegen das Audit (#693)
A lead looks at the runs of the agents it leads - held against the task and
against what the engine stamped, never by asking the agent.

- RunInspector (Core/Inspection): the mechanical check and first profile of
  the inspector foundation (#204). Flags failed runs, tool errors, refusals,
  unfinished calls, tasks answered with bookkeeping alone, and operations the
  agent names but never called in the run (the 2026-09-14 pattern).
- SpotChecks: picks runs per unit (rate, denser for new agents, new models and
  after a failure, daily cap), deterministic by run id; one task per lead.
- Escalation tool: spot_checks, inspect_run, check_done, propose_measure.
  Measures go to a human; nothing is carried out automatically. A security
  suspicion is its own case, not a personnel matter.
- Organisation view: settings per unit, recent checks, measures to decide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:40:20 +02:00
RichardandClaude Opus 5.5 ab1bd67464 Merge feat/688-department-situation: Lage je Abteilung (#688)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:58:13 +02:00
RichardandClaude Opus 5.5 f649f2fd7a Organigramm: Lage je Abteilung in der Teamuebersicht (#688)
- TeamMember: Laeufe und Kosten heute, offene und blockierte Aufgaben je Agent
  (eine Abfrage fuer alle, nicht eine je Agent)
- TeamUnit: dieselben Werte samt Untereinheiten, offene Vorgaenge aus der Einheit,
  heutige Kostenmeldung (#699)
- team.js: Lagezeile auf jeder Karte und in der Seitenleiste, Instanz summiert;
  Spruenge zu Kosten je Einheit und zu den Vorgaengen; i18n en/de
- Tests: TeamOverviewTests (+2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:50:17 +02:00
RichardandClaude Opus 5.5 888369698d Merge feat/698-doctrine: Doctrine je Einheit (#698)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:46:27 +02:00
RichardandClaude Opus 5.5 679333b382 Doctrine: die Leitung steuert ihre Einheit, ohne jeden Auftragstext anzufassen (#698)
- SqliteDoctrineStore: je Einheit versioniert (Tabelle Doctrines: Text, Autor, Lauf, Grund),
  hoechstens 2000 Zeichen, leer entfernt; im Speicher gehalten fuer jeden Lauf
- OrgBriefing: die Doctrine der eigenen Einheit, nur eine Ebene tief, mit dem Satz,
  dass ein Widerspruch zur Aufgabe eskaliert wird; Leitungen erfahren doctrine_set
- Escalation: doctrine_read, doctrine_set (nur die Leitung, Grund Pflicht)
- IAgentTool.Vorgabe(operation, context): Einstufung mit dem Aufrufkontext; eine Leitung
  der Fremdinhalt-Stufe legt doctrine_set zur Freigabe vor
- API GET/PUT /organisation/units/{id}/doctrine; WebUI-Karte mit Verlauf und Markierung
  haeufiger Aenderungen; i18n en/de
- Tests: DoctrineTests (5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:38:44 +02:00
RichardandClaude Opus 5.5 c608af1abb Merge feat/699-unit-costs: Kosten je Einheit (#699)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:17:42 +02:00
RichardandClaude Opus 5.5 da34b215f7 Kosten je Einheit aufrechnen und Abweichungen melden (#699)
- IUsageRepository.GetDailyByAgentAsync: Tagessummen je Agent, Abo-Tokens getrennt
- UnitCosts: je Einheit samt Untereinheiten heute/7/30 Tage, Monat, Vormonat,
  Durchschnittstag (28 Tage, ab 7 Tagen Verlauf), Maximum = Summe der Agentengrenzen
- Meldungen: Abweichung vom eigenen Verlauf, Naehe zur Grenzsumme, Monatsschwellen
  der Instanz; CostWatch alle 15 min, je Einheit/Tag einmal (Tabelle CostAlerts),
  als Aufgabe an den Menschen; schaltet nichts ab
- API /usage/units, /usage/cost-alerts; Zeitreihe gruppiert nach Einheit
- WebUI: Karte "Kosten je Einheit" mit Meldungen in der Verbrauchsansicht; i18n en/de
- Einstellungen instance.json costWatch
- Tests: UnitCostsTests (8)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:09:42 +02:00
RichardandClaude Opus 5.5 7eb211fd06 Merge fix/filerw-workspace-in-path (#757)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:04:38 +02:00
RichardandClaude Opus 5.5 92b2075e14 FileRW: Arbeitsbereich im Pfad annehmen, Muster-Hinweis nur bei Treffern (#757)
- "shared:betrieb/protokoll.md" wird zu workspace + Pfad (wie FTP/RocketChat seit #718);
  muss zu einem angegebenen workspace passen, eine Pfadliste nennt nur einen Bereich
- read_many mit Muster: Hinweis auf einen anderen Bereich nur, wenn dort Dateien passen;
  ohne Pfad und Muster kein Hinweis (die Wurzel gibt es ueberall)
- verweigerter Pfad: kein doppeltes "Access denied", Warnung statt ERR mit Stacktrace
- Tests: WorkspaceInPathTests (6)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:04:38 +02:00
RichardandClaude Opus 5.5 b6405a57d3 Version 0.1.16: ORG-Block Zwischenstand fuer den Testbetrieb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:20:58 +02:00
RichardandClaude Opus 5.5 305b177650 Merge feat/687-lead-approvals: Freigabe durch die Leitung (#687)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:20:34 +02:00
RichardandClaude Opus 5.5 f51186269c Freigabe durch die Leitung innerhalb von Grenzen (#687)
- UnitConfig.Approvals: Operationen, Hoechstzahl je Tag, Stunden je Freigabe; nur der
  Mensch setzt sie (OrgAdministration.SetApprovals mit Audit, Teilmengenregel nach oben,
  Senken oben senkt unten mit; Agentenaenderungen/Sonderbudget nie freigebbar)
- LeadApprovals: Vorlage geht an die naechste Leitung, deren Einheit die Operation
  erlaubt; nie eigene Aufrufe, nie eine Leitung mit Fremdinhalt, Tagesdeckel, Frist.
  Entscheidung ueber Escalation approve_call/reject_call, im Audit als lead:<id>
- Der Mensch sieht alles und kann zuerst entscheiden; danach wird die Leitungsaufgabe
  geschlossen. Nach der Frist nur noch der Mensch.
- StagedCalls: Approver, ApproverUntil, ApproverTaskId (Nachruestung)
- WebUI: Hinweis "bei Leitung" in der Freigabestelle, Zaehler ohne diese, Quote je
  Leitung; Karte in der Organisationsansicht; i18n en/de
- Tests: LeadApprovalsTests (13), OrgAdministrationTests (+2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:12:18 +02:00
RichardandClaude Opus 5.5 dafb8241a0 Merge feat/690-top: Entscheidungsinstanz an der Spitze (#690)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:39:42 +02:00
RichardandClaude Opus 5.5 e8964e3c74 Entscheidungsinstanz an der Spitze: Mensch, Agent oder Mensch zuerst mit Frist (#690)
- cases.top in instance.json: Human | Agent | HumanFirst, agentId, humanFirstHours
- TopRole: der entscheidende Agent steht in keiner Einheit, liest keine Fremdinhalte
  und hat nur Taskboard, Escalation, Memory, FileRW, AgentComm; geprueft beim Setzen,
  bei jeder Zustellung und vor jeder Entscheidung
- CaseDesk: was bisher an der Spitze beim Menschen landete, geht nach Einstellung an
  den Agenten; Tagesdeckel und Frist gehen weiter an den Menschen. handle verwehrt,
  forward geht an den Menschen. Mensch zuerst: Uebergabe nach Ablauf, eigene Frist.
  Der Mensch kann einen Fall des Agenten selbst entscheiden.
- Beschluesse des Agenten: ByTopAgent, zum Lesen vorgelegt; jeder Beschluss laesst
  sich mit Begruendung zuruecknehmen und bindet dann niemanden mehr
- Briefing fuer den Agenten an der Spitze, auch ohne Einheiten
- OrgAdministration.SetTop mit Audit; Werkzeugsperre und Verschiebesperre
- WebUI Vorgaenge: Reiter Spitze, Lesen/Zuruecknehmen, Zaehler; i18n en/de
- Tests: TopRoleTests (15), OrgAdministrationTests (+2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:27:26 +02:00
RichardandClaude Opus 5.5 e22edb418a Merge feat/686-meetings: Besprechung als eigenes Mittel (#686)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:12:13 +02:00
RichardandClaude Opus 5.5 f2bf8b5b59 Besprechung als eigenes Mittel: Termin, Tagesordnung, eine Runde je Teilnehmer, Protokoll (#686)
Aufgabentyp meeting mit Teilnehmerliste (Frontmatter, SQLite, Taskboard-Werkzeug,
WebUI). MeetingRunner: jeder Teilnehmer einmal in Reihenfolge, Beitraege
gerahmt als Daten des Verfassers, danach schliesst die Leitung mit Ergebnis und
Aufgaben. Protokoll schreibt die Instanz in den Bereich der Einheit der Leitung.
Teilnehmer nur aus dem Adressbuch der Leitung, hoechstens 12.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:12:13 +02:00
RichardandClaude Opus 5.5 2df2fc476f Merge feat/719-file-history: Versionierung der Arbeitsbereiche (#719)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 11:12:13 +02:00
RichardandClaude Opus 5.5 e9c39c3c96 Versionierung der Arbeitsbereiche: Verlauf je Datei mit Agent, Lauf und Vorfassung (#719)
Eigene inhaltsadressierte Ablage (Agents/.history/objects, SHA-256) statt Git,
Journal FileHistory in state.db. Jeder Schreibweg - FileRW write/append/copy/
delete/stock_add, FTP- und RocketChat-Downloads - legt die alte Fassung ab und
verbucht die Aenderung mit RunId. Externe Aenderungen findet ein Abgleich beim
Start und stuendlich. Aufbewahrung nach Tagen und Fassungen, verwaiste Objekte
werden entfernt. WebUI: Dateiverlauf mit Filter, Diff und Wiederherstellen nur
durch den Menschen mit Grund.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 11:12:13 +02:00
RichardandClaude Opus 5.5 621a83de43 Merge feat/720-lost-updates: verlorene Updates erkennen, Konflikte melden und ueberwachen (#720)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:45:46 +02:00
RichardandClaude Opus 5.5 79a3a7854f Verlorene Updates erkennen statt warten: optimistische Pruefung beim Ersetzen, Konflikte im Audit und im Lagebild (#720)
FileLedger merkt je Agent die gelesene Fassung einer Datei in gemeinsamen
Bereichen. write, copy und Downloads (FTP, RocketChat) ersetzen eine Datei nur,
wenn sie seit dem Lesen unveraendert ist; eine fremde Datei nicht ungelesen.
append bleibt ungeprueft, macht aeltere Lesestaende aber ungueltig.
Abgelehnte Schreibvorgaenge: eigener Audit-Status Conflict, Tabelle
FileConflicts, Hotspots (>= 3 in 7 Tagen) in der Teamuebersicht.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:45:46 +02:00
RichardandClaude Opus 5.5 8a7212c240 Merge feat/718-named-workspaces-transfer: FTP und RocketChat kennen die benannten Arbeitsbereiche (#718)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:11:02 +02:00
RichardandClaude Opus 5.5 88c42b244d FTP und RocketChat kennen die benannten Arbeitsbereiche (#718)
Gemeinsamer Helfer NamedWorkspaces in Core statt dreier Kopien: unit: und
Bereichs-Id als Praefix, Lesen braucht Read, Herunterladen braucht Write,
Unbekanntes und Verbotenes antworten gleich. Ein Dateiname aus einer
RocketChat-Nachricht waehlt keinen Bereich.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:11:02 +02:00
RichardandClaude Opus 5.5 1bf26e9ff3 Merge feat/712-foreign-runtimes: Claude Code und Befehl als fremde Laufzeiten (#712)
Unter Linux geprueft: Egress-Proxy, Starter und MCP-Rueckweg in der echten Sandbox; alle Suiten gruen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:22:59 +02:00
RichardandClaude Opus 5.5 9c6e4aa299 Laufzeiten: ein Lauf ohne haltbaren Vorschlag behaelt seinen Verbrauch (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:19:28 +02:00
RichardandClaude Opus 5.5 036d56ff04 Doku: fremde Laufzeiten und Egress-Proxy - Umsetzung, Befunde, Einrichtung (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:18:19 +02:00
RichardandClaude Opus 5.5 d37fe91b37 Laufzeit-Karte: Felder mit zugaenglichen Namen (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:17:14 +02:00
RichardandClaude Opus 5.5 4940fdefb0 Test: der Claude-Code-Weg in der echten Sandbox, mit Stellvertreter (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 23:07:21 +02:00
RichardandClaude Opus 5.5 7a8852fe6b Laufzeiten: die MCP-Bruecke ist auch ohne Starter in der Sandbox (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 22:59:56 +02:00
RichardandClaude Opus 5.5 a76983aa28 Test: Skript ohne Zeilenfortsetzung (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 22:55:49 +02:00
RichardandClaude Opus 5.5 367ea387f6 Fremde Laufzeiten: Claude Code und Befehl in der Sandbox, Egress-Proxy, Vorschlag statt Einsatz (#712)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 22:46:49 +02:00
RichardandClaude Opus 5.5 7d6c2c9495 Merge feat/654-sandbox: Sandbox-Runner mit bubblewrap (#654)
Unter Linux geprueft: 39 Ausbruchstests, viermal die volle Core-Suite
unter Last auf der Test-VM.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 21:27:26 +02:00
RichardandClaude Opus 5.5 192ab0e2e3 Security-Konzept: Befunde aus dem Bau der Sandbox (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 21:27:26 +02:00
RichardandClaude Opus 5.5 f97dfa06d6 Sandbox: Start aus einem langlebigen Thread - das Elternsterbe-Signal haengt am Thread (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 21:20:27 +02:00
RichardandClaude Opus 5.5 6204f1247c Sandbox-Test: die Prozessgrenze zaehlt nur die Sandbox (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:46:13 +02:00
RichardandClaude Opus 5.5 b74177c142 Sandbox-Test: Deskriptoren von aussen zaehlen (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:44:47 +02:00
RichardandClaude Opus 5.5 c220d3cdb4 Sandbox: Beenden sammelt den ganzen Baum ein und wartet nicht ewig auf Rohre (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:42:59 +02:00
RichardandClaude Opus 5.5 d97d4313f1 Sandbox: Wurzel schreibgeschuetzt, Filter-Deskriptor geschlossen (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:31:32 +02:00
RichardandClaude Opus 5.5 0bf08a18fe Sandbox: Prozessgrenze auch unter dash (ulimit -p) (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:30:01 +02:00
RichardandClaude Opus 5.5 da39fb3e91 Sandbox: Startprobe bindet das System wie ein echter Lauf ein (#654)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:28:36 +02:00
RichardandClaude Opus 5.5 257ba87cf5 Sandbox-Runner mit bubblewrap (#654) - noch ungeprueft unter Linux
Jede Codeausfuehrung ausserhalb des Hauptprozesses: eigene Namensraeume
(Mount, PID, Netz nur loopback, User ohne verschachtelte), nur der
Arbeitsbereich unter /work beschreibbar, scripts/ darin schreibgeschuetzt,
keine Umgebung und keine Deskriptoren des Hauptprozesses, alle Capabilities
weg, no_new_privs, seccomp-Sperrliste (eigene BPF, x86_64 und arm64),
Grenzen fuer Zeit, Speicher, Prozesse, Dateigroesse und Ausgabe. Unter
Windows oder ohne bwrap: keine Ausfuehrung, mit Grund im Protokoll.

Erster Nutzer: ffmpeg im SocialMediaManager (fremde Mediendateien). yt-dlp
braucht Netz und folgt mit dem Egress-Proxy (#655).

Die Ausbruchstests (SandboxEscapeTests) laufen nur unter Linux mit bwrap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:40:42 +02:00
RichardandClaude Opus 5.5 8c5eca18f5 Merge feat/713-mcp-server: ClawdDotNet als MCP-Server (#713)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:28:47 +02:00
RichardandClaude Opus 5.5 cb46289bb6 ClawdDotNet als MCP-Server: durch dieselben Pruefstellen (#713)
Eine fremde Laufzeit oder der eigene Claude Code des Menschen spricht per MCP
mit der Instanz. Der Server bietet genau die Werkzeuge des Agenten hinter dem
Token an; jeder Aufruf laeuft durch die Engine wie ein Aufruf des eigenen
Modells (Rechtetor, Vorpruefung, Werkzeugrechte, Staging, Audit mit Quelle
mcp, Rahmung), und der Aufrufer gilt als Leser fremder Inhalte (#715).

Eigener Socket mcp.sock statt manager.sock: ueber den Instanz-Socket antwortet
die Verwaltung ohne Token, ueber mcp.sock gibt es nur /mcp und nur mit
MCP-Token. Lauf-Tokens nur im Speicher, enden mit dem Lauf; persoenliche Tokens
(hoechstens 90 Tage, widerrufbar, nur als SHA-256) in der Agentenansicht.
Transporte: HTTP auf mcp.sock, Weboberflaeche und Manager (/mcp/{instanz}),
stdio ueber ClawdDotNet --mcp-bridge (Token nur aus Umgebung oder 0600-Datei).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:28:47 +02:00
RichardandClaude Opus 5.5 b5f65b8cf7 Merge feat/717-fuellarbeit: Fuellarbeit, Grossaufgaben und Sonderbudget (#717)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:47:41 +02:00
RichardandClaude Opus 5.5 67649559f5 Grossaufgaben und Sonderbudget (#717, Stufe 2+3)
Eine Aufgabe, deren eigene Schaetzung (gemessen, Geschwister oder Autor)
ueber der Haelfte der Tageskostengrenze liegt, bekommt zuerst einen
Planungslauf: teilen (Teile unter der Elternaufgabe) oder Sonderbudget
beantragen. Danach wartet sie auf ihre Teile bzw. die Freigabe und laeuft
einmal zum Zusammenfuehren.

Sonderbudget ueber Escalation.request_budget, ausnahmslos freigabepflichtig
(auch gegen Werkzeugkonfiguration und Dauerfreigabe). Laeufe im Baum ziehen
den Topf statt der Tagesgrenzen, tragen BudgetPot in Verbrauch und Beleg und
sind in der Kostenanalyse (nach Budget) und auf der Aufgabenkarte gesondert
sichtbar. Aufgebraucht zaehlen sie wieder gegen den Tag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:47:41 +02:00