Skip to content

Fetch — The Action Layer

Layer 2: Closing the Gap

Fetch is the second derivative — the framework's action decision layer that determines when and how much to act.

Fetch = Chirp × |DRIFT| × Confidence

What is Fetch?

The Core Question

Fetch answers the fundamental question: "Should I act now?"

It synthesizes:

  • Urgency (Chirp) — "Should I act?"
  • Distance (DRIFT) — "How much action is needed?"
  • Readiness (Confidence) — "Can I act safely?"

Result: A single score that determines execution.

Why "Fetch"?

The term has dual meaning:

  1. Action: To retrieve, to go get something (the dive)
  2. Oceanography: The distance wind travels over water to generate waves

Both meanings capture the essence: action across distance.


The Formula

Complete Calculation

javascript
Fetch = Chirp × |DRIFT| × Confidence

Where:
  Chirp      = Signal strength (0-100)
  DRIFT      = Methodology − Performance (the gap)
  Confidence = min(Perch, Wake) / 100

Why This Formula?

Multiplicative by design:

  • If Chirp = 0 → No urgency → Fetch = 0 (don't act)
  • If DRIFT = 0 → No gap → Fetch = 0 (goal met, stop)
  • If Confidence = 0 → Not ready → Fetch = 0 (unsafe)

All three must be present for action to occur.


The Three Components

1. Chirp: "Should I Act?"

Urgency signal strength

Chirp ScoreUrgency LevelExample
90-100Critical"URGENT: Click Submit NOW"
70-89High"Search for this topic"
50-69Moderate"Please review when ready"
30-49Low"Consider this option"
0-29Minimal"Maybe look at this later"

Low Chirp blocks action even if gap is large.

2. DRIFT: "How Much?"

The magnitude of the gap

| |DRIFT| | Gap Size | Example | |---------|----------|---------| | 80-100 | Massive | Brand new task, 0% complete | | 50-79 | Large | Significant work remaining | | 20-49 | Moderate | Halfway there | | 5-19 | Small | Nearly complete | | 0-4 | Tiny | Essentially done |

We use absolute value because:

  • Positive drift (+70) → Need to close the gap
  • Negative drift (-70) → Need to capitalize on momentum

Both require action.

3. Confidence: "Can I?"

Readiness = min(Perch, Wake) / 100

ConfidenceReadinessMeaning
0.80-1.00HighStrong structure + good memory
0.60-0.79ModerateAdequate but not perfect
0.40-0.59LowQuestionable readiness
0.20-0.39Very LowRisky to proceed
0.00-0.19MinimalNearly blind

Why min(Perch, Wake)?

The weakest link determines readiness:

  • Perch = 90, Wake = 30 → Confidence = 0.30 (memory is weak)
  • Perch = 40, Wake = 85 → Confidence = 0.40 (structure is weak)

You're only as ready as your weakest dimension.


Decision Thresholds

Standard Thresholds

Fetch ScoreActionDescription
> 1000ExecuteHigh confidence, act immediately
500-1000ConfirmAsk before proceeding
100-500QueueLog for later review
< 100WaitInsufficient conditions

Enhanced Thresholds (with Confidence)

javascript
if (fetch > 1000 && confidence > 0.60) {
  return 'execute';              // Full automation
}
else if (fetch > 1000 && confidence <= 0.60) {
  return 'execute_with_review';  // Automate but flag
}
else if (fetch > 500) {
  return 'confirm';              // Human decision
}
else if (fetch > 100) {
  return 'queue';                // Log for later
}
else {
  return 'wait';                 // Don't act
}

Fetch in Practice

Example 1: Browser Automation

Scenario: "Click the Submit button"

javascript
// Inputs
chirp = 90;       // Clear, direct command
perch = 75;       // Found button, good selector
wake = 85;        // User just filled form
methodology = 80; // Goal: form submitted
performance = 20; // Current: form filled only

// Calculations
drift = Math.abs(80 - 20) = 60;
confidence = Math.min(75, 85) / 100 = 0.75;
fetch = 90 × 60 × 0.75 = 4,050;

// Decision
fetch > 1000 && confidence > 0.60
Execute (click the button)

Example 2: Content Publishing

Scenario: Should you publish this video now?

javascript
// Inputs
chirp = 45;       // Moderate trending signal
perch = 80;       // Well-structured
wake = 70;        // Fits channel
methodology = 70;
performance = 35;

// Calculations
drift = Math.abs(70 - 35) = 35;
confidence = Math.min(80, 70) / 100 = 0.70;
fetch = 45 × 35 × 0.70 = 1,102;

// Decision
fetch > 1000
Execute (publish now)

Example 3: Trading Decision

Scenario: Strong setup, should you enter?

javascript
// Inputs
chirp = 70;       // Breakout signal
perch = 85;       // Clear levels
wake = 90;        // Pattern matches history
methodology = 75;
performance = 50;

// Calculations
drift = Math.abs(75 - 50) = 25;
confidence = Math.min(85, 90) / 100 = 0.85;
fetch = 70 × 25 × 0.85 = 1,487;

// Decision
fetch > 1000 && confidence > 0.60
Execute (enter trade)

Example 4: Low Confidence Blocks Action

Scenario: Urgent signal but weak memory

javascript
// Inputs
chirp = 90;       // Very urgent
perch = 85;       // Good structure
wake = 15;        // No historical context!
methodology = 80;
performance = 20;

// Calculations
drift = Math.abs(80 - 20) = 60;
confidence = Math.min(85, 15) / 100 = 0.15;  // Wake kills confidence!
fetch = 90 × 60 × 0.15 = 810;

// Decision
fetch < 1000
Queue (urgency + gap are high, but not ready)

This is the safety mechanism. Even with high urgency and large gap, low confidence blocks execution.


The Multiplicative Effect

Why Multiplication Matters

One zero kills the score:

ChirpDRIFTConfidenceFetchResult
90600.754,050✅ Execute
0600.750❌ Wait (no urgency)
9000.750❌ Wait (no gap)
906000❌ Wait (not ready)

This prevents:

  • Acting without urgency
  • Acting when goal is met
  • Acting when not ready

Comparison: Addition vs Multiplication

If we used addition:

javascript
// WRONG
fetch = chirp + drift + confidence;
fetch = 90 + 60 + 0.75 = 150.75;
// Still triggers action despite confidence = 0!

With multiplication:

javascript
// CORRECT
fetch = chirp × drift × confidence;
fetch = 90 × 60 × 0 = 0;
// Action blocked by low confidence

Fetch as the Dive

The Biological Metaphor

The cormorant:

  1. Chirps (detects urgency)
  2. Perches (surveys structure)
  3. Watches (remembers productive spots)
  4. Measures (sees fish, calculates distance)
  5. Decides (dive or wait?)
  6. Dives (Fetch)

Fetch is the dive.

The Three Questions

Before diving, the cormorant asks:

QuestionComponentCheck
Is there food here?ChirpUrgency/Signal
Can I reach it?DRIFTDistance
Am I ready to dive?ConfidenceStructure + Memory

All three must be "yes" to dive.


Fetch Depends on DRIFT

The Dependency Chain

Layer 0: Chirp, Perch, Wake (fundamental)

Layer 1: DRIFT (derived from Layer 0)

Layer 2: Fetch (derived from Layer 0 + Layer 1)

You must measure before acting.

Why Fetch is NOT a 4th Dimension

From the Framework Analysis:

Energy/Force/Fetch are derived:

  • E = mc² (derived from mass, space, time)
  • F = ma (derived from mass, acceleration)
  • Fetch = f(Chirp, Perch, Wake, DRIFT)

Fetch is a product of the foundation, not a peer to it.


The Feedback Loop

Fetch Closes the Gap

1. Sense (3D)     → Chirp, Perch, Wake
2. Measure (DRIFT) → Calculate gap
3. Decide (Fetch)  → Should I act?
4. Execute         → Perform action (if Fetch > threshold)
5. Re-measure      → New DRIFT
6. Loop            → Repeat until DRIFT ≈ 0

Goal: DRIFT decreases with each iteration.

Example: Multi-Step Automation

javascript
// Step 1
chirp = 90, drift = 80, confidence = 0.75
fetch = 5,400Execute (navigate to page)

// Step 2 (after navigation)
chirp = 90, drift = 50, confidence = 0.80
fetch = 3,600Execute (type query)

// Step 3 (after typing)
chirp = 90, drift = 20, confidence = 0.85
fetch = 1,530Execute (click search)

// Step 4 (after search)
chirp = 90, drift = 2, confidence = 0.90
fetch = 162Queue (nearly done, minor cleanup)

// Step 5
chirp = 90, drift = 0, confidence = 0.90
fetch = 0Wait (goal achieved!)

DRIFT converges to zero. Fetch follows.


Advanced Patterns

Pattern 1: Decay Urgency Over Time

javascript
// Urgency decays if action is delayed
const decayedChirp = originalChirp × Math.exp(-0.1 × timeElapsed);

Why: Urgent signals become less urgent if not acted upon.

Pattern 2: Loop Detection

javascript
const actionHistory = [];

function checkForLoop(action, url) {
  const hash = `${action}-${url}`;
  const repeatCount = actionHistory.filter(h => h === hash).length;

  if (repeatCount >= 3) {
    // Same action repeated 3+ times
    fetch = 0;  // Force stop
    return true;
  }

  actionHistory.push(hash);
  return false;
}

Why: If DRIFT isn't decreasing, you're stuck.

Pattern 3: Confidence Floor

javascript
if (confidence < 0.3) {
  // Regardless of Fetch score, don't act
  return 'wait';
}

Why: Below 30% confidence is too risky.


Fetch vs Other Frameworks

Fetch ≈ Controller Output (PID)

PIDFetch
u(t) = Kp·e + Ki·∫e + Kd·de/dtFetch = Chirp × |DRIFT| × Confidence
Continuous outputThreshold-based decision
Always actsCan choose to wait

Fetch ≈ Policy Execution (RL)

RLFetch
a = argmax Q(s,a) or π(s)Action if Fetch > threshold
Learned from dataExplicit formula
ProbabilisticDeterministic thresholds

When Fetch Fails

Failure Mode 1: Infinite Loop

Symptom: Fetch keeps executing, DRIFT not decreasing

Cause: Wrong action being taken

Solution: Loop detection + force stop after N attempts

Failure Mode 2: Premature Action

Symptom: Acting too soon, errors occur

Cause: Thresholds too low or confidence overestimated

Solution: Raise thresholds, improve confidence calculation

Failure Mode 3: Paralysis

Symptom: Never acts, always waits

Cause: Thresholds too high or confidence too strict

Solution: Lower thresholds, relax confidence requirements


The Symmetry

FrameworkFormulaOutput
DRIFTMethodology − PerformanceThe Gap (signed)
FetchChirp × |DRIFT| × ConfidenceThe Work (magnitude)
DRIFT = Where you are vs where you should be
Fetch = Energy required to get there

DRIFT sees the distance.Fetch closes it.


Next Steps


"Fetch is the dive to reach the moon's reflection." 🦅