# NetVM Agent Chat Policy: Main Chat Preservation **Status:** ACTIVE POLICY (Mandatory across all fleet automation, jobs, and operator tooling) **Date:** 2026-10-04 **Version:** 2.0 **Applies to:** All autonomous agents (`muse`, `pip`, `646`, `opm`), scheduled jobs (`super job`), orchestrator tooling (`super dm`, `dm.py`), and human operators. --- ## 1. The Core Principle: Main Chat Is Sacred > **Rule:** **Avoid using Main Chat whenever possible.** > > When Main Chat gets bogged down with automated entries, scheduled job triggers, log dumps, or inter-agent chatter, **work stops actually getting done**. > Browser DOM virtualizers lag or crash, context windows saturate with noisy outputs, and the agent's attention drifts away from primary operator directives. Main Chat is reserved **exclusively** for high-level human operator oversight, urgent human-visible escalations, and direct operator conversational alignment. --- ## 2. Channel Segregation Rules ### Rule A: Scheduled Jobs MUST Target Dedicated Sidechats * **Never** configure a routine scheduled job (e.g., cron checks, health monitors, heartbeats, periodic scrapes) to deliver to `main`. * Every job definition in `jobs/.json` must explicitly specify: * `"dm_target": ""` OR * `"sidechat": { "create": true, "name_template": "...", "reuse_key": "..." }` * Any job found dumping routine health outputs or telemetry into `main` must be immediately migrated to a dedicated sidechat. ### Rule B: Inter-Agent Communication Runs via Sidechats / Side Agents * Autonomous agents communicating with one another (e.g., `646` ↔ `pip`, `opm` ↔ `646`) must use dedicated coordination sidechats (e.g. `646-pip-coord`, `646-opm-coord`, `646 tasks`). * Do not route peer coordination or sub-task requests through an agent's Main Chat. * Subordinate or delegated tasks should be spun off to side agents or sidechats to isolate the conversation state and prevent main thread contamination. ### Rule C: Large Payloads Transferred via File System, Not Chat * Do **not** dump multi-kilobyte log extracts, raw HTTP responses, table dumps, or diffs into any chat window. * Payloads must be written to disk on `bl` or the VM (e.g. in `/home/super/Projects/NetVM/logs/` or `/srv/box/`) and referenced via short path / pointer in the message: * ✅ *Good:* `[RESULT 12345] Health check completed. 6/6 endpoints OK. Detailed breakdown saved to logs/http-health-20261004.log` * ❌ *Forbidden:* Pasting 200 lines of raw curl outputs or JSON logs into chat. ### Rule D: Operator CLI (`super dm`) Enforces Sidechat-First Flow * Interactive conversational sessions (`super dm chat `) prompt for or default to sidechats and issue an explicit policy warning whenever Main Chat is selected. * When dispatching one-off DMs via `super dm send` or `super dm wo`, operators must prefer `--target ""` over `--target main`. --- ## 3. Fleet Addressing Directory | Target | Agent | Purpose | Policy Tier | |---|---|---|---| | `main` | All (`muse`, `pip`, `646`, `opm`) | Direct human-to-operator urgent interventions only | **Restricted / Minimal** | | `heartbeat` | `opm` | Automated DM pipeline heartbeat verification | **Sidechat Required** | | `646 tasks` | `646` | Daily check-ins, execution health, operator tasks | **Sidechat Required** | | `646-pip-coord` | `pip` / `646` | Peer coordination between pip and 646 | **Sidechat Required** | | `646-opm-coord` | `opm` / `646` | Peer coordination between opm and 646 | **Sidechat Required** | --- ## 4. Violations & Enforcement 1. **Dispatcher Guard:** Scheduled jobs with `schedule != "manual"` and no `dm_target` or `sidechat` configuration will be audited and retrofitted with dedicated sidechat targets. 2. **Review Checklist:** Any PR, skill, rule, or script introducing automated messages must verify that output lands in a sidechat or log file, never in Main Chat. --- ## 5. Changelog ### v2.0 — 2026-10-04: Sidechat-only enforcement * **New rule:** No DM lands in Main Chat unless explicitly authorized. `dm.py send` / `job-dispatch.py` refuse `--target main` without `--allow-main-chat` (exit 2, `main_chat_blocked` log event, before any browser navigation). Job JSON opt-in key: `"allow_main_chat": true`. * **Watcher:** `main-chat-watchdog.py` (every 5 min) classifies dm-log events into blocked/ authorized / violation. * **Triage:** `docs/SIDECHAT-POLICY-TRIAGE.md` `— where to look first on failure. * **Fix:** `SIDCHAT_ALIASES["heartbeat"]` de-collided — was pointing at 646's tasks thread (`1e75a740-...`); now points at the dedicated heartbeat sidechat (`0077e918-...`, reuse_key `heartbeat-opm` in `job-sidechats.json`). ### v1.0 — 2026-10-04: Initial policy * Main Chat preservation: scheduled jobs and inter-agent communication must use dedicated sidechats. * Fleet addressing directory established.