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
- Reality closes loops, not AI
- Closure must be auditable
- High-risk loops are never auto-closed
- All closure rules must be machine-evaluable
- 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:
- Goal (optional, flexible)
- Loop (strict, outcome-bound)
- ClosureSpec (definition of “done”)
- Signal (facts from reality)
- Action (attempts to progress a loop)
- 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.