Every JARVIS agent ships with a context.md file in its working directory. It is not documentation for humans only — it is the operational contract the runtime is expected to honor: which hosts are in scope, where utilities live, how to reply in Rocket.Chat, and what must never be touched.
Putting that contract in the prompt alone does not work at scale. Prompts get truncated, models get swapped, and “please don’t read other agents’ folders” is not enforceable. The harness enforces scope in rules and sandbox config; context.md is the readable source of truth the agent and operator share.
What belongs in the contract
- Identity: channel name, tmux session, SSH alias, working directory.
- Allowed paths and explicit forbidden paths.
- Utilities and routines index — how to deploy, email, or SSH without improvising.
- History: dated log of significant actions so restarts do not erase memory.
When the contract changes, the agent’s behavior should change without redeploying the model. That is the difference between a demo and an operation.