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| × ConfidenceWhat 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:
- Action: To retrieve, to go get something (the dive)
- Oceanography: The distance wind travels over water to generate waves
Both meanings capture the essence: action across distance.
The Formula
Complete Calculation
Fetch = Chirp × |DRIFT| × Confidence
Where:
Chirp = Signal strength (0-100)
DRIFT = Methodology − Performance (the gap)
Confidence = min(Perch, Wake) / 100Why 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 Score | Urgency Level | Example |
|---|---|---|
| 90-100 | Critical | "URGENT: Click Submit NOW" |
| 70-89 | High | "Search for this topic" |
| 50-69 | Moderate | "Please review when ready" |
| 30-49 | Low | "Consider this option" |
| 0-29 | Minimal | "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
| Confidence | Readiness | Meaning |
|---|---|---|
| 0.80-1.00 | High | Strong structure + good memory |
| 0.60-0.79 | Moderate | Adequate but not perfect |
| 0.40-0.59 | Low | Questionable readiness |
| 0.20-0.39 | Very Low | Risky to proceed |
| 0.00-0.19 | Minimal | Nearly 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 Score | Action | Description |
|---|---|---|
| > 1000 | Execute | High confidence, act immediately |
| 500-1000 | Confirm | Ask before proceeding |
| 100-500 | Queue | Log for later review |
| < 100 | Wait | Insufficient conditions |
Enhanced Thresholds (with Confidence)
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"
// 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?
// 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?
// 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
// 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:
| Chirp | DRIFT | Confidence | Fetch | Result |
|---|---|---|---|---|
| 90 | 60 | 0.75 | 4,050 | ✅ Execute |
| 0 | 60 | 0.75 | 0 | ❌ Wait (no urgency) |
| 90 | 0 | 0.75 | 0 | ❌ Wait (no gap) |
| 90 | 60 | 0 | 0 | ❌ 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:
// WRONG
fetch = chirp + drift + confidence;
fetch = 90 + 60 + 0.75 = 150.75;
// Still triggers action despite confidence = 0!With multiplication:
// CORRECT
fetch = chirp × drift × confidence;
fetch = 90 × 60 × 0 = 0;
// Action blocked by low confidenceFetch as the Dive
The Biological Metaphor
The cormorant:
- Chirps (detects urgency)
- Perches (surveys structure)
- Watches (remembers productive spots)
- Measures (sees fish, calculates distance)
- Decides (dive or wait?)
- Dives (Fetch)
Fetch is the dive.
The Three Questions
Before diving, the cormorant asks:
| Question | Component | Check |
|---|---|---|
| Is there food here? | Chirp | Urgency/Signal |
| Can I reach it? | DRIFT | Distance |
| Am I ready to dive? | Confidence | Structure + 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 ≈ 0Goal: DRIFT decreases with each iteration.
Example: Multi-Step Automation
// Step 1
chirp = 90, drift = 80, confidence = 0.75
fetch = 5,400 → Execute (navigate to page)
// Step 2 (after navigation)
chirp = 90, drift = 50, confidence = 0.80
fetch = 3,600 → Execute (type query)
// Step 3 (after typing)
chirp = 90, drift = 20, confidence = 0.85
fetch = 1,530 → Execute (click search)
// Step 4 (after search)
chirp = 90, drift = 2, confidence = 0.90
fetch = 162 → Queue (nearly done, minor cleanup)
// Step 5
chirp = 90, drift = 0, confidence = 0.90
fetch = 0 → Wait (goal achieved!)DRIFT converges to zero. Fetch follows.
Advanced Patterns
Pattern 1: Decay Urgency Over Time
// 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
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
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)
| PID | Fetch |
|---|---|
| u(t) = Kp·e + Ki·∫e + Kd·de/dt | Fetch = Chirp × |DRIFT| × Confidence |
| Continuous output | Threshold-based decision |
| Always acts | Can choose to wait |
Fetch ≈ Policy Execution (RL)
| RL | Fetch |
|---|---|
| a = argmax Q(s,a) or π(s) | Action if Fetch > threshold |
| Learned from data | Explicit formula |
| Probabilistic | Deterministic 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
| Framework | Formula | Output |
|---|---|---|
| DRIFT | Methodology − Performance | The Gap (signed) |
| Fetch | Chirp × |DRIFT| × Confidence | The Work (magnitude) |
DRIFT = Where you are vs where you should be
Fetch = Energy required to get thereDRIFT sees the distance.Fetch closes it.
Next Steps
- Use Cases - See Fetch calculations in practice
- Implementation - Code examples
- Framework Analysis - Why Fetch is NOT a 4th dimension
"Fetch is the dive to reach the moon's reflection." 🦅