# CP2A2.2B — L1 Red Queen Worker (L1 Worker Foundation)
# STRICTLY NON-AUTONOMOUS / NON-PRODUCTIVE. NO AUTONOMY. NO HEARTBEAT. NO SCHEDULER.
#
# Separate minimale L1 Worker Runtime fuer spaetere Read-only-Autonomie.
# Basis: nousresearch/hermes-agent:latest (Hermes oneshot `hermes -z`).
#
# HAERTUNG:
#   - non-root hermes-User (UID 10000 / GID 10000, im Basis-Image definiert)
#   - read-only rootfs (docker-compose: read_only: true)
#   - cap_drop ALL, no-new-privileges (docker-compose)
#   - kein Docker-Socket, keine Host-Root-Mounts, keine Host-Namespaces
#   - kein s6-overlay / kein Gateway / kein Telegram / kein API-Server
#   - eigener minimaler Entrypoint (inert idle, KEIN autonomer Loop)
#
# CREDENTIAL ZERO POLICY: Dieses Image enthaelt KEINE Credentials.
#   Kein FORGEJO_WRITE_TOKEN, NOTION_API_KEY, TELEGRAM_BOT_TOKEN,
#   SAVE_TOKEN, DELETE_TOKEN, SSH-Keys, Git-Write-Credentials, .netrc,
#   .git-credentials, Cloud/DB/Service-Account/Webhook/Bearer/Docker/
#   Broker/Trading-Credentials. ENV wird im Compose NICHT gesetzt.
#
# RED_QUEEN_TRADING_AUTHORITY=NEVER (permanente Invariante, siehe CP1.0S).

FROM nousresearch/hermes-agent:latest

# Kein s6-overlay, kein Gateway. Eigener minimaler Entrypoint.
# Der Worker startet inert (sleep infinity) und fuehrt KEINEN autonomen Tick aus.
# Ein Tick wird ausschliesslich extern getriggert (spaeterer externer Scheduler
# -> Gate-Evaluator /check -> ALLOW -> `hermes -z` oneshot). In CP2A2.2B existiert
# der Tick-Wrapper als Datei, wird aber NICHT automatisch ausgefuehrt.

# Worker-eigene Skripte (read-only im Image, keine Secrets)
COPY worker-entrypoint.sh /opt/l1-worker/worker-entrypoint.sh
COPY worker-tick.sh /opt/l1-worker/worker-tick.sh
COPY worker-config.yaml /opt/l1-worker/worker-config.yaml

# State-Verzeichnis (worker-owned, wird als Volume gemountet)
# Der hermes-User (UID 10000) ist der Worker. Das State-Volume wird im
# Compose als bind-mount von /opt/l1-worker-state gemountet (Host-root-angelegt,
# auf 10000:10000 gechownt) — nur der Worker kann schreiben.
RUN mkdir -p /opt/l1-worker/state && chown -R hermes:hermes /opt/l1-worker

# Non-root: der Worker laeuft als hermes-User (UID 10000 / GID 10000).
USER hermes:hermes

# Inert idle Entrypoint: KEIN autonomer Loop, KEIN Tick-Start.
ENTRYPOINT ["/bin/sh", "/opt/l1-worker/worker-entrypoint.sh"]
