Some checks failed
PR Checklist / pr-checklist (pull_request) Failing after 1m27s
Implements the Ansible Infrastructure as Code story from KT 2026-04-08. One canonical Ansible playbook defines: - Deadman switch (snapshot good config on health, rollback+restart on death) - Golden state config deployment (Anthropic BANNED, Kimi→Gemini→Ollama) - Cron schedule (source-controlled, no manual crontab edits) - Agent startup sequence (pull→validate→start→verify) - request_log telemetry table (every inference call logged) - Thin config pattern (immutable local pointer to upstream) - Gitea webhook handler (deploy on merge) - Config validator (rejects banned providers) Fleet inventory: Timmy (Mac), Allegro (VPS), Bezalel (VPS), Ezra (VPS) Roles: wizard_base, golden_state, deadman_switch, request_log, cron_manager Addresses: timmy-config #442, #443, #444, #445, #446 References: KT Final 2026-04-08 P2, KT Bezalel 2026-04-08 #1-#5
42 lines
1.5 KiB
Django/Jinja
42 lines
1.5 KiB
Django/Jinja
# =============================================================================
|
|
# Thin Config — {{ wizard_name }}
|
|
# =============================================================================
|
|
# THIS FILE IS READ-ONLY. Agents CANNOT modify it.
|
|
# It contains only pointers to upstream. The actual config lives in Gitea.
|
|
#
|
|
# Agent wakes up → pulls config from upstream → loads → runs.
|
|
# If anything tries to mutate this → fails gracefully → pulls fresh on restart.
|
|
#
|
|
# Only way to permanently change config: commit to Gitea, merge PR, Ansible deploys.
|
|
#
|
|
# Generated by Ansible on {{ ansible_date_time.iso8601 }}
|
|
# DO NOT EDIT MANUALLY.
|
|
# =============================================================================
|
|
|
|
identity:
|
|
wizard_name: "{{ wizard_name }}"
|
|
wizard_role: "{{ wizard_role }}"
|
|
machine: "{{ inventory_hostname }}"
|
|
|
|
upstream:
|
|
repo: "{{ upstream_repo }}"
|
|
branch: "{{ upstream_branch }}"
|
|
config_path: "wizards/{{ wizard_name | lower }}/config.yaml"
|
|
pull_on_wake: {{ config_pull_on_wake | lower }}
|
|
|
|
recovery:
|
|
deadman_enabled: {{ deadman_enabled | lower }}
|
|
snapshot_dir: "{{ deadman_snapshot_dir }}"
|
|
restart_cooldown: {{ deadman_restart_cooldown }}
|
|
max_restart_attempts: {{ deadman_max_restart_attempts }}
|
|
escalation_channel: "{{ deadman_escalation_channel }}"
|
|
|
|
telemetry:
|
|
request_log_path: "{{ request_log_path }}"
|
|
request_log_enabled: {{ request_log_enabled | lower }}
|
|
|
|
local_overrides:
|
|
# Runtime overrides go here. They are EPHEMERAL — not persisted across restarts.
|
|
# On restart, this section is reset to empty.
|
|
{}
|