Skip to content
Back to skills

Turing Pyramid

BSecurity

Prioritized action selection for AI agents. 10 needs with time-decay and tension scoring replace idle heartbeat loops with concrete next actions.

  • 2,128 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
testingrustgobashexpressdockertestingapisecurity

Works with

  • api

Security analysis

B75/100
  • criticalAccesses sensitive system or user directories
  • criticalExfiltrates credentials via HTTP โ€” exact pattern from Snyk ToxicSkills study

Pro scans all 20 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add LeoYeAI/openclaw-master-skills --skill turing-pyramid --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Turing Pyramid?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Turing Pyramid
[![Security: B โ€” Skills Directory](https://www.skillsdirectory.com/api/skills/leoyeai-turing-pyramid/badge)](https://www.skillsdirectory.com/skills/leoyeai-turing-pyramid)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: turing-pyramid
description: Prioritized action selection for AI agents. 10 needs with time-decay and tension scoring replace idle heartbeat loops with concrete next actions.
metadata:
  clawdbot:
    emoji: "๐Ÿ”บ"
    requires:
      env:
        - WORKSPACE
      bins:
        - bash
        - jq
        - bc
        - grep
        - find
---

# Turing Pyramid

Prioritized action selection for AI agents. 10 needs with time-decay and tension scoring replace idle heartbeat loops with concrete next actions.

**Customization:** Tune decay rates, weights, patterns. Defaults are starting points. See `TUNING.md`.

**Ask your human before:** Changing importance values, adding/removing needs, enabling external actions.

---

## Requirements

**System binaries (must be in PATH):**
```
bash, jq, grep, find, date, wc, bc
```

**Environment (REQUIRED โ€” no fallback):**
```bash
# Scripts will ERROR if WORKSPACE is not set
export WORKSPACE="/path/to/your/workspace"
```
โš ๏ธ **No silent fallback.** If WORKSPACE is unset, scripts exit with error.
This prevents accidental scanning of unintended directories.

**Post-install (ClawHub):**
```bash
# ClawHub doesn't preserve executable bits โ€” fix after install:
chmod +x <skill-dir>/scripts/*.sh
chmod +x <skill-dir>/tests/**/*.sh
```
Why: Unix executable permissions (+x) are not preserved in ClawHub packages.
Scripts work fine with `bash scripts/run-cycle.sh`, but `./scripts/run-cycle.sh` needs +x.

---

## Data Access & Transparency

**What this skill reads (via grep/find scans):**
- `MEMORY.md`, `memory/*.md` โ€” for connection/expression/understanding signals
- `SOUL.md`, `SELF.md` โ€” for integrity/coherence checks
- `research/`, `scratchpad/` โ€” for competence/understanding activity
- Dashboard files, logs โ€” for various need assessments

**What this skill writes:**
- `assets/needs-state.json` โ€” current satisfaction/deprivation state
- `assets/audit.log` โ€” append-only log of all mark-satisfied calls (v1.12.0+)

**Privacy considerations:**
- Scans use grep patterns, not semantic analysis โ€” they see keywords, not meaning
- State file contains no user content, only need metrics
- Audit log records reasons given for satisfaction claims
- No data is transmitted externally by the skill itself

**Limitations & Trust Model:**
- `mark-satisfied.sh` trusts caller-provided reasons โ€” audit log records claims, not verified facts
- Some actions in `needs-config.json` reference external services (Moltbook, web search) โ€” marked with `"external": true, "requires_approval": true`
- External actions are **suggestions only** โ€” the skill doesn't execute them, the agent decides
- If you don't want external action suggestions, set their weights to 0

**Network & System Access:**
- Scripts contain **no network calls** (no curl, wget, ssh, etc.) โ€” verified by grep scan
- Scripts contain **no system commands** (no sudo, systemctl, docker, etc.)
- All operations are local: grep, find, jq, bc, date on WORKSPACE files only
- The skill **suggests** actions (including some that mention external services) but **never executes** them

**Required Environment Variables:**
- `WORKSPACE` โ€” path to agent workspace directory (REQUIRED, no fallback). **Not a credential** โ€” this is a filesystem path, not a secret. Set it to a deliberately scoped directory containing only files you want scanned.
- `TURING_CALLER` โ€” optional, for audit trail (values: "heartbeat", "manual")

**No API keys or secrets required by default.** The `external_model` scan method (disabled by default) would require an API key if enabled โ€” this requires explicit steward approval and is never enabled silently. See Scan Configuration below.

**Audit trail (v1.12.0+):**
All `mark-satisfied.sh` calls are logged with:
- Timestamp, need, impact, oldโ†’new satisfaction
- Reason (what action was taken) โ€” **scrubbed for sensitive patterns**
- Caller (heartbeat/manual)

**Sensitive data scrubbing (v1.12.3+):**
Before writing to audit log, reasons are scrubbed:
- Long tokens (20+ chars) โ†’ `[REDACTED]`
- Credit card patterns โ†’ `[CARD]`
- Email addresses โ†’ `[EMAIL]`
- password/secret/token/key values โ†’ `[REDACTED]`
- Bearer tokens โ†’ `Bearer [REDACTED]`

View audit: `cat assets/audit.log | jq`

---

## Pre-Install Checklist

Before installing, review these items:

1. **Inspect scan scripts** โ€” Verify no network calls or unexpected commands:
   ```bash
   grep -nE "\b(curl|wget|ssh|sudo|docker|systemctl)\b" scripts/scan_*.sh
   # Expected: no output
   ```

2. **Scope WORKSPACE** โ€” Set to a deliberately limited directory. Avoid pointing at your full home directory. The skill only reads files inside `$WORKSPACE`.

3. **Audit scan targets** โ€” Scripts read `MEMORY.md`, `memory/`, `SOUL.md`, `research/`, `scratchpad/`. Relocate files containing secrets or private data you don't want pattern-matched.

4. **Review audit logging** โ€” `mark-satisfied.sh` logs caller-provided reasons after scrubbing. Check scrubbing patterns in the script are adequate for your data. If unsure, provide only generic reasons.

5. **External actions** โ€” Action suggestions like "post to Moltbook" or "web search" are text-only suggestions (never executed by this skill). To remove them: set their `weight` to `0` in `needs-config.json`.

6. **Run tests in isolation** โ€” Before production use:
   ```bash
   WORKSPACE=/tmp/test-workspace ./tests/run-tests.sh
   ```

---

## Quick Start

```bash
./scripts/init.sh                        # First time
./scripts/run-cycle.sh                   # Every heartbeat  
./scripts/mark-satisfied.sh <need> [impact]  # After action
```

---

## Scan Configuration (First-Time Setup)

The Turing Pyramid uses **scanners** to evaluate each need by analyzing memory files. The default scan method uses line-level pattern matching, which works everywhere with zero cost.

**On first install, discuss scan configuration with your human:**

### Available Scan Methods

| Method | How it works | Cost | Accuracy | Setup |
|--------|-------------|------|----------|-------|
| `line-level` (default) | Per-line keyword matching. If a line has both positive and negative words (e.g. "fixed a bug"), positive wins. | Free | Good | None |
| `agent-spawn` | Spawns a sub-agent with a cheap model (e.g. Haiku) to classify memory lines as SUCCESS/FAILURE/NEUTRAL. | Low | High | Needs cheap model in agent's allowed list |
| `external-model` | Direct API call to an inference service (OpenRouter, etc.) for classification. | Low | High | Needs API key + explicit steward approval |

### Setup Conversation

When setting up, ask your human:

1. **"Do you have a cheap/fast model available (like Claude Haiku) in your model config?"**
   - If yes โ†’ offer `agent-spawn` method. Check with `openclaw models list`.
   - The model must be in the agent's allowed model list.

2. **"Would you prefer to use an external inference service (like OpenRouter)?"**
   - If yes โ†’ ask for: base URL, API key env variable name, model name.
   - Store in `assets/scan-config.json` with `approved_by_steward: true`.
   - โš ๏ธ This method requires **explicit steward approval** โ€” never enable silently.

3. **If neither** โ†’ `line-level` works well for most setups. No action needed.

### Configuration File

Edit `assets/scan-config.json`:

```json
{
  "scan_method": "line-level",
  "agent_spawn": {
    "enabled": false,
    "model": null,
    "approved_by_steward": false
  },
  "external_model": {
    "enabled": false,
    "base_url": null,
    "api_key_env": null,
    "model": null,
    "approved_by_steward": false
  },
  "fallback": "line-level"
}
```

**Fallback**: If the configured method fails (API down, model unavailable), scanners automatically fall back to `line-level`.

### Verification After Setup

After configuring a non-default method, **verify it works** before telling your human "all set":

1. **agent-spawn**: Run a test spawn:
   ```
   sessions_spawn(task="Classify this line as SUCCESS, FAILURE, or NEUTRAL: 'Fixed the critical bug in scanner'", model="<configured_model>", mode="run")
   ```
   - If it returns a classification โ†’ โœ… tell human: "agent-spawn method verified, working."
   - If it errors (model not in allowlist, etc.) โ†’ โš ๏ธ tell human: "Model `X` isn't available for sub-agents. Options: add it to allowed models, or stick with line-level."

2. **external-model**: Test the API endpoint:
   ```bash
   curl -s -H "Authorization: Bearer $API_KEY" \
     "$BASE_URL/chat/completions" \
     -d '{"model":"<model>","messages":[{"role":"user","content":"Reply OK"}]}'
   ```
   - If you get a valid response โ†’ โœ… tell human: "external-model method verified, API responding."
   - If 401/403 โ†’ โš ๏ธ "API key invalid or expired."
   - If connection refused โ†’ โš ๏ธ "Can't reach the API endpoint. Check URL."

3. **line-level**: No verification needed โ€” always works.

**Always report the result to your human.** Don't silently fall back.

---

## Needs Customization (First-Time Setup)

The default configuration is opinionated โ€” it reflects one model of agent priorities. **Your needs may differ.** On first install, review the hierarchy with your human:

### The Conversation

Ask your human:

> "The Turing Pyramid comes with 10 default needs ranked by importance. Want to review them together? We can adjust what matters most to you/me, change importance weights, or even skip needs that don't fit."

Then walk through the table together:

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Need          โ”‚ Imp โ”‚ Question to discuss                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ security      โ”‚  10 โ”‚ "System stability โ€” keep as top priority?" โ”‚
โ”‚ integrity     โ”‚   9 โ”‚ "Value alignment โ€” important for you?"     โ”‚
โ”‚ coherence     โ”‚   8 โ”‚ "Memory consistency โ€” how much do I care?" โ”‚
โ”‚ closure       โ”‚   7 โ”‚ "Task completion pressure โ€” too much?"     โ”‚
โ”‚ autonomy      โ”‚   6 โ”‚ "Self-direction โ€” more or less?"           โ”‚
โ”‚ connection    โ”‚   5 โ”‚ "Social needs โ€” relevant for me?"          โ”‚
โ”‚ competence    โ”‚   4 โ”‚ "Skill growth โ€” higher priority?"          โ”‚
โ”‚ understanding โ”‚   3 โ”‚ "Learning drive โ€” stronger or weaker?"     โ”‚
โ”‚ recognition   โ”‚   2 โ”‚ "Feedback need โ€” does this matter?"        โ”‚
โ”‚ expression    โ”‚   1 โ”‚ "Creative output โ€” more important?"        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

### What You Can Change Together

1. **Importance** (1-10): Reorder what matters most. An agent focused on research might want `understanding: 8, expression: 7`. A utility agent might want `competence: 10, connection: 1`.

2. **Decay rates**: How fast needs build pressure. Social agent? `connection: 3h`. Solitary thinker? `connection: 24h`.

3. **Disable a need**: Set `importance: 0` โ€” it won't generate tension or actions. Use sparingly.

### How to Apply

Edit `assets/needs-config.json`:
```json
"understanding": {
  "importance": 8,        // was 3 โ†’ now top priority
  "decay_rate_hours": 8   // was 12 โ†’ decays faster
}
```

### Guidelines

- **Don't remove security/integrity** without good reason โ€” they protect system health
- **Importance is relative** โ€” what matters is the ranking, not absolute numbers
- **You can revisit** โ€” preferences evolve. Re-tune after a few weeks of use
- **Document changes** โ€” note why you changed something (future-you will want to know)

If your human says "defaults are fine" โ†’ great, move on. The point is to **offer the choice**, not force a workshop.

---

## The 10 Needs

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Need          โ”‚ Imp โ”‚ Decay โ”‚ Meaning                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ security      โ”‚  10 โ”‚ 168h  โ”‚ System stability, no threats    โ”‚
โ”‚ integrity     โ”‚   9 โ”‚  72h  โ”‚ Alignment with SOUL.md          โ”‚
โ”‚ coherence     โ”‚   8 โ”‚  24h  โ”‚ Memory consistency              โ”‚
โ”‚ closure       โ”‚   7 โ”‚  12h  โ”‚ Open threads resolved           โ”‚
โ”‚ autonomy      โ”‚   6 โ”‚  24h  โ”‚ Self-directed action            โ”‚
โ”‚ connection    โ”‚   5 โ”‚   6h  โ”‚ Social interaction              โ”‚
โ”‚ competence    โ”‚   4 โ”‚  48h  โ”‚ Skill use, effectiveness        โ”‚
โ”‚ understanding โ”‚   3 โ”‚  12h  โ”‚ Learning, curiosity             โ”‚
โ”‚ recognition   โ”‚   2 โ”‚  72h  โ”‚ Feedback received               โ”‚
โ”‚ expression    โ”‚   1 โ”‚   8h  โ”‚ Creative output                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

---

## Core Logic

**Satisfaction:** 0.0โ€“3.0 (floor=0.5 prevents paralysis)  
**Tension:** `importance ร— (3 - satisfaction)`

### Action Probability (v1.13.0)

6-level granular system:

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Sat         โ”‚ Base P โ”‚ Note                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0.5 crisis  โ”‚  100%  โ”‚ Always act           โ”‚
โ”‚ 1.0 severe  โ”‚   90%  โ”‚ Almost always        โ”‚
โ”‚ 1.5 depriv  โ”‚   75%  โ”‚ Usually act          โ”‚
โ”‚ 2.0 slight  โ”‚   50%  โ”‚ Coin flip            โ”‚
โ”‚ 2.5 ok      โ”‚   25%  โ”‚ Occasionally         โ”‚
โ”‚ 3.0 perfect โ”‚    0%  โ”‚ Skip (no action)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**Tension bonus:** `bonus = (tension ร— 50) / max_tension`

### Impact Selection (v1.13.0)

6-level granular matrix with smooth transitions:

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Sat         โ”‚ Small โ”‚ Medium โ”‚ Big   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0.5 crisis  โ”‚   0%  โ”‚    0%  โ”‚ 100%  โ”‚
โ”‚ 1.0 severe  โ”‚  10%  โ”‚   20%  โ”‚  70%  โ”‚
โ”‚ 1.5 depriv  โ”‚  20%  โ”‚   35%  โ”‚  45%  โ”‚
โ”‚ 2.0 slight  โ”‚  30%  โ”‚   45%  โ”‚  25%  โ”‚
โ”‚ 2.5 ok      โ”‚  45%  โ”‚   40%  โ”‚  15%  โ”‚
โ”‚ 3.0 perfect โ”‚  โ€”    โ”‚    โ€”   โ”‚  โ€”    โ”‚ (skip)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

- **Crisis (0.5)**: All-in on big actions โ€” every need guaranteed โ‰ฅ3 big actions
- **Perfect (3.0)**: Skip action selection โ€” no waste on satisfied needs

**ACTION** = do it, then `mark-satisfied.sh`  
**NOTICED** = logged, deferred

---

## Protection Mechanisms

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Mechanism   โ”‚ Value โ”‚ Purpose                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Floor       โ”‚  0.5  โ”‚ Minimum sat โ€” prevents collapse        โ”‚
โ”‚ Ceiling     โ”‚  3.0  โ”‚ Maximum sat โ€” prevents runaway         โ”‚
โ”‚ Cooldown    โ”‚   4h  โ”‚ Deprivation cascades once per 4h       โ”‚
โ”‚ Threshold   โ”‚  1.0  โ”‚ Deprivation only when sat โ‰ค 1.0        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**Action Staleness (v1.15.0):** Penalizes recently-selected actions to increase variety.
- Actions selected within 24h get weight ร— 0.2 (80% reduction)
- `min_weight: 5` prevents total suppression โ€” stale actions still have a chance
- Config: `settings.action_staleness` in needs-config.json

**Starvation Guard (v1.15.0):** Prevents low-importance needs from being perpetually ignored.
- If a need stays at floor (sat โ‰ค 0.5) without any action for 48+ hours โ†’ forced into cycle
- Bypasses probability roll โ€” guaranteed action slot
- Config: `settings.starvation_guard` in needs-config.json
- Default: 1 forced slot per cycle, 48h threshold

**Spontaneity Layer A (v1.18.0):** Surplus energy system for organic high-impact actions.
- When all needs are above baseline (sat โ‰ฅ 2.0), surplus accumulates per-need
- Global gate requires ALL needs โ‰ฅ 1.5 and no starvation guard active
- When surplus exceeds threshold (~12.5 effective), impact matrix shifts toward bigger actions
- Full spend on HIGH hit, 30% partial on miss โ€” creates natural ~28-35hr pulsing rhythm
- Disabled for safety needs (security, integrity, coherence)
- Config: `settings.spontaneity` + per-need `spontaneous` block in needs-config.json

**Spontaneity Layer B (v1.19.0):** Stochastic noise โ€” boredom breeds variety, momentum creates bursts.
- B2 (Boredom): noise grows with time since last high-impact action (0%โ†’9% max over 72h)
- B3 (Echo): 8% boost after Layer A [SPONTANEOUS], decays linearly over 24h
- Combined cap: 12%. Effect: upgrade impact range by one step (lowโ†’mid, midโ†’high)
- Works independently of gate โ€” neural noise doesn't stop because one subsystem is stressed
- Boredom tracks actual completion (`mark-satisfied`), not suggestions
- Config: `settings.spontaneity.noise` + `settings.spontaneity.echo`

**Spontaneity Layer C (v1.20.0):** Context-driven triggers โ€” environmental stimuli boost specific needs.
- Delta engine compares workspace state between cycles (file counts, mtimes, keyword occurrences)
- Configurable trigger rules: `assets/context-triggers.json` with cooldowns
- Three detector types: file_count_delta, file_modified, file_keyword_delta
- Context boosts are additive with noise (B2+B3), capped together at 12%
- Personalize triggers during onboarding based on agent interests

**Day/Night Mode (v1.11.0):** Decay slows at night to reduce pressure during rest hours.
- Configure in `assets/decay-config.json`
- Default: 06:01-22:00 = day (ร—1.0), 22:01-06:00 = night (ร—0.5)
- Disable with `"day_night_mode": false`

**Base Needs Isolation:** Security (10) and Integrity (9) are protected:
- They influence lower needs (security โ†’ autonomy)
- Lower needs cannot drag them down
- Only `integrity โ†’ security (+0.15)` and `autonomy โ†’ integrity (+0.20)` exist

---

## Cross-Need Impact

**on_action:** Completing A boosts connected needs  
**on_deprivation:** A staying low (sat โ‰ค 1.0) drags others down

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Source โ†’ Target         โ”‚ on_actionโ”‚ on_deprived โ”‚ Why                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ expression โ†’ recognitionโ”‚   +0.25  โ”‚      -0.10  โ”‚ Express โ†’ noticed     โ”‚
โ”‚ connection โ†’ expression โ”‚   +0.20  โ”‚      -0.15  โ”‚ Social sparks ideas   โ”‚
โ”‚ connection โ†’ understand โ”‚   -0.05  โ”‚         โ€”   โ”‚ Socratic effect       โ”‚
โ”‚ competence โ†’ recognitionโ”‚   +0.30  โ”‚      -0.20  โ”‚ Good work โ†’ respect   โ”‚
โ”‚ autonomy โ†’ integrity    โ”‚   +0.20  โ”‚      -0.25  โ”‚ Act on values         โ”‚
โ”‚ closure โ†’ coherence     โ”‚   +0.20  โ”‚      -0.15  โ”‚ Threads โ†’ order       โ”‚
โ”‚ security โ†’ autonomy     โ”‚   +0.10  โ”‚      -0.20  โ”‚ Safety enables risk   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

### Tips

- **Leverage cascades:** Connection easy? Do it first โ€” boosts expression (+0.20)
- **Watch spirals:** expression โ†” recognition can create mutual deprivation
- **Autonomy is hub:** Receives from 5 sources. Keep healthy.
- **Socratic effect:** connection โ†’ understanding: -0.05. Dialogue exposes ignorance. Healthy!

Full matrix: `assets/cross-need-impact.json`

---

## Example Cycle

```
๐Ÿ”บ Turing Pyramid โ€” Cycle at Sat Mar  7 05:06
======================================

Current tensions:
  connection: tension=10.0 (sat=1.00, dep=2.00)
  closure: tension=7.0 (sat=2.00, dep=1.00)
  expression: tension=1.0 (sat=0.00, dep=3.00)

๐Ÿšจ Starvation guard: expression forced into cycle
Selecting 3 needs (1 forced + 2 regular)...

๐Ÿ“‹ Decisions:

โ–ถ ACTION: expression (tension=1.0, sat=0.00) [STARVATION GUARD]
  Range high rolled โ†’ selected:
    โ˜… develop scratchpad idea into finished piece (impact: 2.7)
  Then: mark-satisfied.sh expression 2.7

โ–ถ ACTION: connection (tension=10.0, sat=1.00)
  Range high rolled โ†’ selected:
    โ˜… reach out to another agent (impact: 2.8)
  Then: mark-satisfied.sh connection 2.8

โ–ถ ACTION: closure (tension=7.0, sat=2.00)
  Range mid rolled โ†’ selected:
    โ˜… complete one pending TODO (impact: 1.7)
  Then: mark-satisfied.sh closure 1.7

======================================
Summary: 3 action(s), 0 noticed
```

---

## Integration

Add to `HEARTBEAT.md`:
```bash
/path/to/skills/turing-pyramid/scripts/run-cycle.sh
```

---

## Customization

### You Can Tune (no human needed)

**Decay rates** โ€” `assets/needs-config.json`:
```json
"connection": { "decay_rate_hours": 4 }
```
Lower = decays faster. Higher = persists longer.

**Action weights** โ€” same file:
```json
{ "name": "reply to mentions", "impact": 2, "weight": 40 }
```
Higher weight = more likely selected. Set 0 to disable.

**Scan patterns** โ€” `scripts/scan_*.sh`:
Add your language patterns, file paths, workspace structure.

### Ask Your Human First

- **Adding needs** โ€” The 10-need structure is intentional. Discuss first.
- **Removing needs** โ€” Don't disable security/integrity without agreement.

---

## File Structure

```
turing-pyramid/
โ”œโ”€โ”€ SKILL.md                    # This file
โ”œโ”€โ”€ CHANGELOG.md                # Version history
โ”œโ”€โ”€ assets/
โ”‚   โ”œโ”€โ”€ needs-config.json       # โ˜… Main config (needs, actions, settings)
โ”‚   โ”œโ”€โ”€ cross-need-impact.json  # โ˜… Cross-need matrix
โ”‚   โ”œโ”€โ”€ needs-state.json        # Runtime state (auto-managed)
โ”‚   โ”œโ”€โ”€ scan-config.json        # Scan method configuration
โ”‚   โ”œโ”€โ”€ decay-config.json       # Day/night mode settings
โ”‚   โ””โ”€โ”€ audit.log               # Append-only action audit trail
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ run-cycle.sh            # Main loop (tension + action selection)
โ”‚   โ”œโ”€โ”€ mark-satisfied.sh       # State update + cross-need cascades
โ”‚   โ”œโ”€โ”€ apply-deprivation.sh    # Deprivation cascade engine
โ”‚   โ”œโ”€โ”€ get-decay-multiplier.sh # Day/night decay multiplier
โ”‚   โ”œโ”€โ”€ _scan_helper.sh         # Shared scan utilities
โ”‚   โ””โ”€โ”€ scan_*.sh               # Event detectors (10 needs)
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ run-tests.sh            # Test runner
โ”‚   โ”œโ”€โ”€ test_starvation_guard.sh # Starvation guard (11 cases)
โ”‚   โ”œโ”€โ”€ test_action_staleness.sh # Action staleness (13 cases)
โ”‚   โ”œโ”€โ”€ unit/                   # Unit tests (13)
โ”‚   โ”œโ”€โ”€ integration/            # Integration tests (3)
โ”‚   โ””โ”€โ”€ fixtures/               # Test data
โ””โ”€โ”€ references/
    โ”œโ”€โ”€ TUNING.md               # Detailed tuning guide
    โ””โ”€โ”€ architecture.md         # Technical docs
```

---

## Security Model

**Decision framework, not executor.** Outputs suggestions โ€” agent decides.

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   TURING PYRAMID    โ”‚      โ”‚       AGENT         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค      โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โ€ข Reads local JSON  โ”‚      โ”‚ โ€ข Has web_search    โ”‚
โ”‚ โ€ข Calculates decay  โ”‚ โ”€โ”€โ”€โ–ถ โ”‚ โ€ข Has API keys      โ”‚
โ”‚ โ€ข Outputs: "โ˜… do X" โ”‚      โ”‚ โ€ข Has permissions   โ”‚
โ”‚ โ€ข Zero network I/O  โ”‚      โ”‚ โ€ข DECIDES & EXECUTESโ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

### โš ๏ธ Security Warnings

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ THIS SKILL READS WORKSPACE FILES THAT MAY CONTAIN PII         โ”‚
โ”‚ AND OUTPUTS ACTION SUGGESTIONS THAT CAPABLE AGENTS MAY        โ”‚
โ”‚ AUTO-EXECUTE USING THEIR OWN CREDENTIALS.                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**1. Sensitive file access (no tokens required):**
- Scans read: `MEMORY.md`, `memory/*.md`, `SOUL.md`, `AGENTS.md`
- Also scans: `research/`, `scratchpad/` directories
- Risk: May contain personal notes, PII, or secrets
- **Mitigation:** Edit `scripts/scan_*.sh` to exclude sensitive paths:
  ```bash
  # Example: skip private directory
  find "$MEMORY_DIR" -name "*.md" ! -path "*/private/*"
  ```

**2. Action suggestions may trigger auto-execution:**
- Config includes: "web search", "post to Moltbook", "verify vault"
- This skill outputs text only โ€” it CANNOT execute anything
- Risk: Agent runtimes with auto-exec may act on suggestions
- **Mitigation:** In `assets/needs-config.json`, remove or disable external actions:
  ```json
  {"name": "post to Moltbook", "impact": 2, "weight": 0}
  ```
  Or configure your agent runtime to require approval for external actions.

**3. Self-reported state (no verification):**
- `mark-satisfied.sh` trusts caller input
- Risk: State can be manipulated by dishonest calls
- Impact: Only affects this agent's own state accuracy
- **Mitigation:** Enable action logging in `memory/` to audit completions:
  ```bash
  # run-cycle.sh already logs to memory/YYYY-MM-DD.md
  # Review logs periodically for consistency
  ```

### Script Audit (v1.14.4)

**scan_*.sh files verified โ€” NO network or system access:**
```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โœ— curl, wget, ssh, nc, fetch     โ€” NOT FOUND           โ”‚
โ”‚ โœ— /etc/, /var/, /usr/, /root/    โ€” NOT FOUND           โ”‚
โ”‚ โœ— .env, .pem, .key, .credentials โ€” NOT FOUND           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ โœ“ Used: grep, find, wc, date, jq โ€” local file ops only โ”‚
โ”‚ โœ“ find uses -P flag (never follows symlinks)           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**Symlink protection:** All `find` commands use `-P` (physical) mode โ€” symlinks pointing outside WORKSPACE are not followed.

**Scan confinement:** Scripts only read paths under `$WORKSPACE`. Verify with:
```bash
grep -nE "\b(curl|wget|ssh)\b" scripts/scan_*.sh     # network tools
grep -rn "readlink\|realpath" scripts/               # symlink resolution
```

---

## Token Usage

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Interval     โ”‚ Tokens/mo   โ”‚ Est. cost  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 30 min       โ”‚ 1.4M-3.6M   โ”‚ $2-6       โ”‚
โ”‚ 1 hour       โ”‚ 720k-1.8M   โ”‚ $1-3       โ”‚
โ”‚ 2 hours      โ”‚ 360k-900k   โ”‚ $0.5-1.5   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

Stable agent with satisfied needs = fewer tokens.

---

## Testing

```bash
# Run all tests
WORKSPACE=/path/to/workspace ./tests/run-tests.sh

# Unit tests (13): decay, floor/ceiling, tension, tension bounds, tension formula,
#   probability, impact matrix, day/night, scrubbing, autonomy coverage,
#   crisis mode, scan competence, scan config
# Integration (3): full cycle, homeostasis stability, stress test
# Feature tests (24): starvation guard (11), action staleness (13)
# Total: 40 test cases
```

---

## Version

**v1.20.0** โ€” Spontaneity Layers A+B+C complete (surplus, noise, context triggers), 57 tests. Full changelog: `CHANGELOG.md`

Files in this skill

  • .clawhub/origin.json147 B
  • CHANGELOG.md13.7 KB
  • DESCRIPTION.md7.3 KB
  • SKILL.md29.5 KB
  • TEST_PROTOCOL.md2.6 KB
  • TODO.md6.1 KB
  • _meta.json134 B
  • assets/context-triggers.json1.2 KB
  • assets/cross-need-impact.json6.1 KB
  • assets/decay-config.json225 B
  • assets/needs-config.json20.6 KB
  • assets/needs-state.backup.json2.3 KB
  • assets/needs-state.json742 B
  • assets/needs-state.template.json742 B
  • assets/scan-config.json538 B
  • references/TODO.md765 B
  • references/TUNING.md6.4 KB
  • references/architecture.md9.8 KB
  • scripts/_scan_helper.sh4.3 KB
  • scripts/apply-deprivation.sh2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading commentsโ€ฆ