Adds l1-run, a headless L1 runner that drives the full L1 loop (author,
adversarial judge, apply) through direct single-shot LLM API calls, so L1
ingest can run unattended from cron or a CI step. Additive: the existing
runners (Claude Code, Codex CLI, Copilot projection), the canonical contracts,
the adversarial gate and the state machine are unchanged.
Part of the vscode_abap_remote_fs integration
(issue #473):
this is the programmatic inference path a proxy or an editor command can drive.
pipeline.py l1-run: batch loop via direct LLM calls, no chat runner and no
VS Code required; exit codes suited to cron and CI.llm_client: two profiles (author and judge), bothanthropic(Messages)
andopenai(chat completions) wire shapes, api keys read from the
environment only, standard-libraryurllibwith no new dependencies.core/docs/15-headless-l1-runner.md: usage, configuration and guarantees.
See the CHANGELOG for the full list.