MDX Limo
Loop Tracking System

Canonical Definition, Vision, and Schema

Status: Canonical
Audience: Product, Engineering, Founders
Purpose: This document is the single source of truth for how loops are defined, tracked, evaluated, and closed across the system. All future expansion must remain consistent with this model.


1. Simple Definition

A Loop is a verifiable claim about the future that stays open until reality proves it true or a human explicitly confirms it.

A loop exists to answer one question only:

Has the real-world outcome actually happened?

If the answer is not provably yes, the loop remains open.

Loops are not tasks, reminders, workflows, or UI artifacts.
They are outcome contracts between intent and reality.


2. Vision

The Loop Tracking System is the truth layer between intention and reality.

  • Humans express intent.
  • AI proposes definitions and actions.
  • The system waits for evidence or confirmation.
  • Only reality (or explicit human assertion) closes loops.

The AI assists.
The system verifies.
Humans arbitrate ambiguity.

This design allows the system to:

  • Track anything, including domains not yet automated
  • Preserve trust by never lying about completion
  • Expand safely into new domains without redesign
  • Accumulate durable memory based on outcomes, not guesses

3. Core Principles

  1. Reality closes loops, not AI
  2. Closure must be auditable
  3. High-risk loops are never auto-closed
  4. All closure rules must be machine-evaluable
  5. Contradictions reopen loops automatically

4. Mental Model

Goals describe why.
Loops define what must become true.
Actions attempt to make it true.
Signals prove whether it happened.


5. Object Model Overview

The system is composed of six core objects:

  1. Goal (optional, flexible)
  2. Loop (strict, outcome-bound)
  3. ClosureSpec (definition of “done”)
  4. Signal (facts from reality)
  5. Action (attempts to progress a loop)
  6. DecisionTrace (audit + learning)

6. Goal

Goals are optional and flexible. They allow the system to “track anything” without requiring strict closure.

Goals do not close automatically and do not require machine verification.

1Goal { 2 id: UUID 3 title: string 4 description?: string 5 6 status: "active" | "paused" | "completed" | "abandoned" 7 priority: "low" | "medium" | "high" 8 9 ownerId: UserID 10 createdAt: Timestamp 11 updatedAt: Timestamp 12}

Examples:

  • Close seed round
  • Stay in touch with investors
  • Improve health

Goals may derive one or more loops.


7. Loop (Core Object)

A Loop represents a concrete, closeable outcome.

1Loop { 2 id: UUID 3 4 goalId?: UUID 5 6 type: string 7 status: LoopStatus 8 priority: "low" | "medium" | "high" 9 10 objective: string 11 closureSpecId: UUID 12 13 external: boolean 14 irreversible: boolean 15 riskLevel: "low" | "medium" | "high" 16 17 context: LoopContext 18 19 ownerId: UserID 20 dueBy?: Timestamp 21 22 createdAt: Timestamp 23 updatedAt: Timestamp 24}
1enum LoopStatus { 2 OPEN, 3 IN_PROGRESS, 4 BLOCKED, 5 AT_RISK, 6 CLOSED, 7 REOPENED, 8 ABANDONED 9}

Loop Context

1LoopContext { 2 people?: PersonID[] 3 threads?: ThreadID[] 4 events?: EventID[] 5 documents?: DocumentID[] 6 projects?: ProjectID[] 7}

8. ClosureSpec

A ClosureSpec defines what “closed” means in a constrained, auditable way.

1ClosureSpec { 2 id: UUID 3 version: number 4 5 summary: string 6 mode: "evidence" | "asserted" 7 8 conditions: ClosureCondition[] 9 10 requiresUserApproval: boolean 11 confidence: number 12 13 createdBy: "system" | "ai" | "user" 14 createdAt: Timestamp 15}
1ClosureCondition = 2 | { kind: "signal"; type: string; minCount?: number } 3 | { kind: "user_confirmation"; prompt: string }

9. Signal

Signals are facts produced by reality.

1Signal { 2 id: UUID 3 loopId: UUID 4 5 type: string 6 source: "system" | "integration" | "user" | "agent" 7 8 payload?: Record<string, any> 9 timestamp: Timestamp 10}

10. Action

Actions are attempts to progress a loop.

1Action { 2 id: UUID 3 loopId: UUID 4 5 type: string 6 preview: string 7 requiresApproval: boolean 8 9 status: "proposed" | "approved" | "executed" | "failed" 10 executedAt?: Timestamp 11}

11. DecisionTrace

1DecisionTrace { 2 id: UUID 3 loopId: UUID 4 5 proposedActionId?: UUID 6 userResponse: "approved" | "edited" | "rejected" 7 8 notes?: string 9 timestamp: Timestamp 10}

12. Closure Rules (Non-Negotiable)

  • AI never closes loops
  • Loops close only when:
    • Evidence satisfies the ClosureSpec, or
    • A human explicitly confirms closure
  • Any contradictory signal automatically reopens the loop
  • Every closure must be explainable after the fact

13. Final Mantra

Loops are not suggestions.
Loops are promises to reality.