550e30901b
- dm.py: placement-aware verify (verify_placement), checked_uuid logging, placement_mismatch events - main-chat-watchdog.py: P0 alerts on placement_mismatch - box-ctl.py: notify routes to sidechat, box policy command - jobs: ops-audit and pipe-demo use sidechats - response-harvester.py: chain deduplication Session: sidechat/ops-restore
77 lines
4.8 KiB
Markdown
77 lines
4.8 KiB
Markdown
# 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/<name>.json` must explicitly specify:
|
|
* `"dm_target": "<sidechat-name-or-uuid>"` 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 <agent>`) 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 "<sidechat>"` 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.
|