diff --git a/README.md b/README.md index d6e0b20..24a9ad6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Prose Contracts — Syslog Solution LLC -Operating contracts for Hermes agents. Each `.prose.md` file defines a **responsibility** (recurring duty) or **template** (scaffold) that agents can execute via OpenProse or follow manually. +Operating contracts for Syslog agents. Each `.prose.md` file defines a **function** (callable helper), **responsibility** (recurring duty with state), or **pattern** (instantiable knowledge/template) that agents can execute via OpenProse or follow manually. ## How Agents Run These Contracts @@ -40,49 +40,91 @@ curl -sL https://git.sysloggh.net/SyslogSolution/prose-contracts/raw/branch/mast ## Available Contracts -### Responsibilities (Recurring Duties) +### Responsibilities (Recurring Duties — `kind: responsibility`) -| Contract | What It Does | When To Run | +Run on trigger or schedule. Maintain persistent world-model state across runs. + +| Contract | Domain | Description | |---|---|---| -| `memory-audit-maintenance` | Audits & reorganizes an agent's native memory (MEMORY.md, USER.md). Categorizes entries, moves rules to skills, verifies configs, frees up char budget. | Memory >85% usage or user request: "memory audit" | -| `zulip-health` | Checks Zulip connectivity, message flow, and bot responsiveness. | On Zulip issues or periodic health check | -| `litellm-health` | Verifies LiteLLM proxy connectivity, model availability, and key rotation. | On inference failures or periodic check | -| `litellm-self-heal` | Attempts to fix common LiteLLM issues (key rotation, restart, config reload). | When litellm-health reports failures | -| `zulip-mention-reliability` | Diagnoses and fixes @mention detection issues in Zulip. | On missed @mention reports | -| `pm2-self-heal` | Restarts crashed PM2 processes and verifies recovery. | On PM2 process failure | +| `memory-audit-maintenance` | Memory | Audits & reorganizes an agent's native memory (MEMORY.md, USER.md). Categorizes entries, moves rules to skills, verifies configs. | +| `build-zulip-plugin` | Zulip | Generates and iteratively improves a Hermes Zulip platform plugin. Each run produces a new version. | +| `zulip-health` | Zulip | Checks Zulip connectivity, message flow, and bot responsiveness. | +| `zulip-mention-reliability` | Zulip | Diagnoses and fixes @mention detection issues in Zulip. | +| `zulip-approval-fix` | Zulip | Fixes broken /approve and /deny slash commands for Hermes agents. | +| `litellm-self-heal` | LiteLLM | Standing responsibility — monitors LiteLLM health and auto-remediates: key rotation, container restart, config reload, roster fixes. | +| `gpu-fleet` | GPU | Manages the GPU inference fleet: model deployment, registration, health checks, LiteLLM sync. | +| `gpu-monitor` | GPU | Comprehensive GPU fleet monitor — polls sidecars, router, LiteLLM every 15s, renders SSE dashboard. | +| `proxmox-monitor` | Infra | Proxmox cluster + Docker monitoring via the existing Grafana/Prometheus stack on CT 116. | +| `pm2-self-heal` | Ops | Monitors PM2 processes (abiba-zulip, abiba-telegram) and auto-restarts any that are stopped or errored. | -### Templates (Scaffolds) +### Instantiable Templates (`kind: pattern` — run with `prose run`) -| Contract | What It Does | Parameters | +Generate configs or perform a transformation on demand. No persistent state. + +| Contract | Description | Key Parameters | |---|---|---| -| `hermes-config-template` | Generates a standard Hermes config for any agent. Enforces shared infra (Firecrawl, SearXNG, RA-H OS MCP, LiteLLM) while keeping model choices flexible. | `agent_name` (required), `default_model`, `default_provider`, `fallback_model`, `auxiliary_model` | +| `hermes-config-template` | Standard Hermes config for any Syslog agent. Enforces shared infra (Firecrawl, SearXNG, RA-H OS MCP, LiteLLM). | `agent_name` (required), `default_model`, `auxiliary_model` | -### Scripts +### Reference Documents (`kind: pattern` — read for context, not run) -| File | What It Does | +Encode topology, architectural decisions, and lessons. You read them before planning; you don't `prose run` them. + +| Contract | Description | |---|---| -| `pm2-self-heal.sh` | Shell script to restart crashed PM2 processes (companion to the prose contract) | +| `infrastructure-control` | Full topology and control pattern: 5-node Proxmox cluster, 3 Docker ecosystems, NFS storage, network verification, IP-first configuration doctrine. | +| `pi-approval-architecture` | pi's approval model vs Hermes, available commands, architectural constraints. | +| `zulip-adapter-lessons` | Failure modes, fixes, and patterns from building the pi Zulip extension and Hermes Zulip plugin. | + +### Functions (`kind: function` — callable helpers, no state) + +Called on-demand as single-render tools. + +| Contract | Description | +|---|---| +| `litellm-health` | Verifies LiteLLM inference stack health: containers, router, GPU fleet, model inference, agent keys. | +| `infrastructure-monitoring` | Deploys Prometheus + GPU exporters + Grafana to monitor the inference fleet from CT 116. | +| `hello-world` | Minimal test contract — verifies the OpenProse execution pipeline works. | + +### Scripts (`scripts/`) + +Companion shell scripts that contracts delegate to. + +| File | Description | +|---|---| +| `daily-infra-report.py` | Generates the daily infrastructure dashboard (HTML email to jerome@sysloggh.com). | +| `zulip-monitor.sh` | Monitors Zulip bot health and message flow. | +| `pm2-self-heal.sh` | Shell companion to the pm2-self-heal contract — restarts crashed PM2 processes. | ## Contract Structure -Every `.prose.md` file has the same structure: +Kinds determine the section set. +**`kind: responsibility`** (recurring duty with persistent state): +``` +## Maintains — World-model state this contract tracks +## Parameters — Tunable inputs (with defaults) +## Requires — External dependencies and preconditions +## Continuity — When to run (triggers & cadence) +## Remembers — What to learn between runs +## Invariants — Inviolable rules for execution +## Execution — Step-by-step instructions +## Example Output — What a good run looks like ``` ---- -kind: -name: -description: ... ---- -## Maintains — What state the contract tracks -## Parameters — Tunable inputs (with defaults) -## Continuity — When to run (triggers & cadence) -## Success Criteria — How to know it worked -## Remembers — What to learn between runs -## Rules — Inviolable rules for execution -## Execution — Step-by-step instructions -## Example Output — What a good run looks like +**`kind: function`** (stateless callable helper): ``` +## Parameters — Tunable inputs (with defaults) +## Returns — Output schema +## Requires — External dependencies +## Execution — Step-by-step instructions +``` + +**`kind: pattern`** (instantiable knowledge): +``` +Variable — templates use Parameters + Execution; reference docs are prose-driven. +``` + +**`kind: gateway`** / **`kind: test`** — not currently used in this repo. ## Adding New Contracts