# Safety And Cost Gates ## Keine Secrets Config-Dateien duerfen nur Env-Var-Namen enthalten, keine Werte. Erlaubt: ```json "api_key_envs": ["LITELLM_API_KEYS", "OPENAI_API_KEY"] ``` Nicht erlaubt: ```json "api_key": "..." ``` ## Kein Start durch Scaffold Alle Scripts in `scripts/` sind lokal: - `meta3_smoke.py` - `meta3_prepare.py` - `meta3_plan_batches.py` - `meta3_build_workpackets.py` - `meta3_validate_run.py` - `meta3_preflight.py` Sie duerfen keine API-Requests ausfuehren. Ausnahme: `meta3_run_packets.py` kann spaeter Netzwerk nutzen, aber nur mit: - vorhandenen Workpackets, - vorherigem Dry-Run, - `--execute-network`, - `--accepted-call-budget `, - vorhandener API-Key-Env. Ohne `--execute-network` schreibt es nur einen Dry-Run-Report. ## Langlauf-Kontrolle Ein echter Runner schreibt und beachtet: - `state/_runner.lock.json`: verhindert Doppelstart. - `state/_runner_heartbeat.json`: Fortschritt, Fehler, In-Flight-Status. - `state/STOP`: stoppt alle Modi nach den laufenden In-Flight-Calls. - `state/STOP_`: stoppt nur einen Modus. Status pruefen: ```bash python3 scripts/meta3_runner_status.py ``` Der Runner submitted nur bis zur Concurrency-Grenze gleichzeitig. Bei Stop- oder Fehlerschwelle werden keine neuen Pakete gestartet; laufende Pakete werden noch sauber verarbeitet. ## Source-Drift-Gate Meta3 baut standardmaessig keine finalen Workpackets, wenn Meta2.0-Audit und rohe Digest-Datei auseinanderlaufen: ```text layer1_audit_unique_digest_paths != layer1_raw_digest_file_rows_counted ``` Das verhindert, dass ein Overnight-Run gegen eine halb aktualisierte Quelle arbeitet. Der Batchplan markiert diesen Fall als `blocked`. `meta3_build_workpackets.py` verweigert ohne lokalen Source-Snapshot oder `--allow-source-drift`. Der sichere Pfad ist: ```bash python3 scripts/meta3_freeze_sources.py ``` Danach konsumieren Workpackets die eingefrorene Datei unter `runs//data/source_snapshot/`. `--allow-source-drift` ist nur fuer diagnostische, nicht-finale Runs gedacht. ## Call-Budget `max_api_calls=10000000` ist ein hartes Planungsmaximum, kein Startsignal. Vor echten Calls braucht es: - Run-Manifest, - Batchplan, - Workpacket-Manifest, - Call-Ledger, - Dry-Run-Report, - Network-Preflight-Report mit Status `pass`, - Kosten-/Concurrency-Akzeptanz, - Abbruchbedingungen. ## Concurrency Start safe: - `safe_batch_size=3` - `safe_concurrency=2` Nicht direkt auf hohe Parallelitaet gehen. Erst Fehlerrate und 429-Rate sehen.