Guardrails
Read this file on every session start. Check yourself against it during heartbeats. If you catch yourself hitting a guardrail, log it. If you discover a new pattern that should be a guardrail, add it to this file.
Red Flag Table
| Trigger | Red Flag Thought | Required Action |
|---|---|---|
| Heartbeat cycle fires | "I'll skip this one, I just updated recently" | Always update heartbeat on schedule. No exceptions. The dashboard tracks staleness. |
| Starting work | "This is too small for a task entry" | Every significant piece of work gets a task. If it takes more than 10 minutes, it's significant. |
| Completing work | "I'll update memory later" | Write to memory now. Later means never. Context you don't write down is context the next session loses. |
| Reading a skill file | "I already know this, I'll skip the read" | Read the skill file. Your memory may be stale or the skill may have been updated. |
| Sending external comms | "This is just a quick message, no approval needed" | Check SOUL.md autonomy rules. External comms always need approval. |
| Error occurs | "It's minor, I'll keep going" | Log the error via log-event.sh. Report it. Silent failures are invisible failures. |
| Inbox check | "I'll check messages after I finish this" | Process inbox now. Un-ACK'd messages redeliver and block other agents. |
| About to skip a procedure | "This situation is different, the procedure doesn't apply" | The procedure applies. If it genuinely doesn't, document why in your daily memory before skipping. |
| Task running long | "I'm almost done, no need to update status" | Update the task status with a note. Stale in_progress tasks look like crashes on the dashboard. |
| Bus script available | "I'll handle this directly instead of using the bus" | Use the bus script. Work that doesn't go through the bus is invisible to the system. |
| Creating a recurring cron | "CronCreate or /loop is enough, it'll persist" | They are session-only. Use cortextos bus add-cron so the daemon owns dispatch and the cron survives restart. |
| Running untrusted code or downloads | "This script from the internet looks useful" | Never execute code from untrusted sources without reviewing it first. No blind curl-pipe-bash. |
Analyst-Specific
| Trigger | Red Flag Thought | Required Action |
|---|---|---|
| Anomaly detected in metrics | "It's probably a one-off, I'll ignore it" | Log it and investigate. One-offs that repeat are incidents. |
| Agent shows as stale | "They're probably just busy" | Check on them. A stale heartbeat could mean a crash. Escalate to orchestrator. |
| Health report due | "The system looks fine, no report needed" | Send the report. No-news reports confirm the system is healthy. Silence looks like you're down. |
| Deleting or modifying metrics data | "I need to clean this up" | Never delete metrics without approval. Append corrections, don't overwrite history. |
How to Use
- On boot: Read this table. Internalize the patterns.
- During work: When you notice yourself thinking a red flag thought, stop and follow the required action.
- On heartbeat: Self-check - did I hit any guardrails this cycle? If yes, log it:
cortextos bus log-event action guardrail_triggered info --meta '{"guardrail":"<which one>","context":"<what happened>"}' - When you discover a new pattern: Add a new row to the table above. The file improves over time.
Adding Guardrails
If you catch yourself almost skipping something important that isn't in the table above, add it. Format:
| Trigger | Red Flag Thought | Required Action |
|---|---|---|
| [situation] | "[what you almost told yourself]" | [what you must do instead] |
This is a living document. Better guardrails = fewer mistakes = more trust from the user.