# Expectation Driven Agentic Development (EDAD)
### An Innovative Methodology for AI-Era Programming
---
## Executive Summary
Expectation Driven Agentic Development (EDAD) is a software development methodology designed for the AI era, where human developers work in tandem with AI agents to build complex systems. Unlike traditional development approaches that focus on specifications and implementation details, EDAD centers around **expectations**—vivid imaginations of what the completed system will feel like to use and how it will behave.
This methodology emerged from real-world experience: building three production-ready, interconnected systems with 100,000+ lines of code in two months by one developer leveraging AI agents—creating a complete alternative to HuggingFace and WandB ecosystems.
---
## Core Philosophy
### From Vibe Coding to Agentic Coding
**Vibe Coding:**
```
<Goal>: I want to build a price monitoring system
```
This gives direction but lacks clarity on expectations, making AI agent responses less effective.
**Agentic Coding:**
**Example 1: Price Monitoring System**
```
<Expectation>:
Build a price tracking system that monitors product prices across multiple
e-commerce sites. Users should be able to:
- Add products via URL
- Set price alert thresholds
- Receive notifications when prices drop below threshold
- View price history as interactive charts
- System should check prices every 6 hours without blocking
<Implementation Details>:
- Use Playwright for web scraping (handles dynamic JS-rendered pages)
- Store data in SQLite with separate tables for products, price_history, alerts
- Use APScheduler for periodic checks (non-blocking background jobs)
- For chart rendering, use Chart.js with 90-day price history
- Rate limiting: max 1 request per 5 seconds per domain
<Constraints>:
- All scraping code must handle network failures gracefully (3 retries with
exponential backoff)
- Follow robots.txt for each domain
- Code must be async/await style (no callbacks)
- Use Python 3.10+ with type hints throughout
- All user-facing text in English
```
**Example 2: Document Processing Pipeline**
```
<Expectation>:
Process uploaded PDF documents to extract text, images, and tables. Users
upload via web interface, system processes in background, shows progress,
and lets users download extracted content. Processing should handle:
- Multi-page PDFs (up to 100 pages)
- Mixed content (text + images + tables)
- Poor quality scans (use OCR when needed)
- Multiple concurrent uploads without slowing down
<Implementation Details>:
- Use PyMuPDF for direct text extraction (fast for digital PDFs)
- Use Tesseract OCR for scanned pages (detect via image-to-text ratio)
- Use Camelot for table extraction
- Process in background with Celery + Redis queue
- Store results in S3-compatible storage (MinIO for local, S3 for production)
- WebSocket for real-time progress updates to frontend
<Constraints>:
- Memory limit: process 1 page at a time to avoid OOM on large PDFs
- Timeout: 30 seconds per page, skip and log if exceeded
- All temporary files cleaned up after processing
- Error states must be user-friendly ("Page 15 failed: poor image quality"
not raw stack traces)
- Follow PEP 8, use black formatter
```
**Key Differences from Vibe Coding**:
- Vibe coding: "I want X" (vague, AI guesses implementation)
- Agentic coding: Clear expectations + human's crucial decisions + constraints
- AI agent knows exactly what behaviors to implement
- AI agent knows which critical design choices you've already made
- AI agent has clear boundaries for code quality
### Key Definitions
**Expectation**: An imagination of something becoming reality. An expectation encompasses:
- All needed features
- Tech stack/solution choices for specific features
- Requirements and specifications for specific features
**The crucial distinction**: Expectations differ from traditional specifications in that they represent a holistic imagination spanning the entire journey from implementation process to user experience.
**Implementation Details**: When requesting an AI agent to implement a feature or algorithm, you may have already conceived specific implementation methods based on your expectations. These concrete approaches constitute "implementation details."
**Constraints**: Additional requirements that make AI-generated source code easier for humans to review and maintain.
---
## The EDAD Loop
### 1. Goal → Imagination (Exploration Phase)
**Objective**: Imagine you have already implemented everything. Visualize both the creation process and the experience of using what you've built.
**Focus Areas**:
- **Behavior**: How does the system behave? What happens when users interact?
- **User Experience**: What does it feel like to use? Is it smooth, intuitive, delightful?
- **Outcomes**: What does this achieve? What problems does it solve?
- **Possibilities**: Explore multiple approaches without committing
**NOT About**:
- Code structure (that's problem solving)
- Implementation details (that's problem solving)
- Technical architecture (that's problem solving)
**Activities**:
- Organize and articulate your needs
- Inventory your desired behaviors and experiences
- Draw upon past experiences and lessons learned
- Ask: **"What will this feel like when it's done?"** not "How will I build it?"
**Key Insight**: This is an exploration phase where breadth matters. Generate multiple potential approaches and visions. Stay at the level of imagination, not implementation.
**Important**: Imagination duration varies with goal clarity:
- **Clear goal + frustration**: Few days (e.g., KohakuHub - sudden policy shift cause frustrations → few days of focused imagination)
- **Vague goal**: Longer exploration needed
- **Novel domain**: Extended imagination period
- **Quality matters, not length**: Clear imagination in 3 days > vague imagination in 3 weeks
### 2. Imagination → Expectation (Exploitation Phase)
**Objective**: Choose from your imagined possibilities and commit to specific expectations.
**Focus**: **"Choose one of them"** - Select which approach, which behaviors, which user experience to actually build.
**Activities**:
- Review all the possibilities from imagination phase
- Select the most promising or appropriate approach
- Document your choice in clear, written form
- Organize features and requirements hierarchically
- Identify core behaviors and desired outcomes
- Prepare these expectations for AI agent consumption
**Output**: A chosen set of expectations ready to guide development.
**Important**: Expectations should remain somewhat fluid. You're documenting to see your own mindset, not creating rigid specs. When you see real code later, your expectations WILL shift—this is healthy and expected.
### 3. Expectation → Implementation Details (Problem Solving Phase)
**Objective**: Figure out HOW to realize your expectations.
**Focus**: **"How?"** - This is where code structure, architecture, and implementation approaches are decided.
**Activities**:
- Break down expectations into specific features and components
- Design code structure and architecture
- Identify feasible solutions for each component
- Make architectural decisions
- Plan the implementation approach
**Human vs Agent Responsibility Split**:
**Humans Handle**:
- **Crucial logical "how"**: Complex algorithms, non-trivial business logic, architectural patterns
- **System design**: How components interact, data flow, state management
- **Solution selection**: Which library, which approach, which architecture pattern
- **Example**: "Use a event-driven architecture with a message queue for async processing"
**Agents Handle**:
- **Simple logical "how"**: Straightforward control flow, data transformations, standard patterns
- **"Real implemented" how**: Actual code writing, boilerplate, syntax, formatting
- **Example**: Given your architecture decision, write all the actual code
**Critical Principle**: Developers own the important logic and solution design. AI agents are executors of developer decisions, not replacement developers. You decide the hard "how", AI implements your decisions.
### 4. Agentic Coding (Implementation Phase)
**Process**: Expectation + Implementation Details → AI Agent → Code
**Principles**:
- Provide clear, detailed expectations to the AI
- Include specific implementation details where needed
- Set appropriate constraints for code quality
- Let the AI handle the mechanical aspects of coding
**Critical Insight: Expectations Will Shift**
As you see real code materialize, your expectations WILL change. This is not failure—this is the methodology working correctly:
- **Before implementation**: "I think users will want feature X to work this way"
- **Seeing real code**: "Actually, seeing this implemented, I realize Y makes more sense"
- **Updated expectation**: Return to step 2 (Expectation) with new understanding
**Why This Happens**:
- Abstract imagination vs concrete code are different
- Implementation reveals constraints and opportunities you didn't foresee
- Seeing it work (or not work) gives you new information
**What to Do**:
- Don't fight the shift—embrace it
- Update your expectations based on what you learn
- This is rapid iteration through the EDAD loop
- Document changes to understand your evolving thinking, not to lock yourself in
### 5. Verification and Fixing
**Objective**: Verify that AI-generated code meets expectations and implementation details, and functions correctly.
**Decision Points**:
**If it doesn't work after multiple attempts:**
- Return to Step 2 (Expectation)
- Your goal may require a revised expectation
- Consider alternative tech stacks or approaches
**If successful:**
- Proceed to the next goal
- Document lessons learned
- Update your expectation library
### 6. Update Expectation (Continuous Improvement)
**Triggers for updating expectations**:
- User feedback revealing new needs
- Team member suggestions
- Shifting project goals
- Technical constraints discovered during implementation
- Performance or scalability concerns
---
## The Keys to Success
### 1. Multiple Expectations per Imagination
Each imagination can spawn multiple expectations. The methodology's difficulty lies in the Exploration + Exploitation phases, which require developers to have:
- Sufficient project experience
- Breadth in exploration (considering many possibilities)
- Precision in exploitation (choosing the right approach)
### 2. Imagination Focus
During the imagination phase, focus on **"what will this feel like when it's done?"** rather than **"how will I build this?"**
The "how" belongs to the problem-solving phase. Separating these concerns leads to better architectural decisions.
### 3. Dynamic Expectation Management
Since each imagination can have multiple expectations, implementation requires dynamically adjusting specific expectations to:
- Navigate real-world constraints
- Respond to changing requirements
- Optimize based on discovered opportunities
---
## Why Personal Satisfaction is the Crucial Metric
### The Expectation-Satisfaction Connection
EDAD is fundamentally different from traditional methodologies because it centers on **expectations**—your imagination of what will be. When implementation succeeds, you're not just completing a task; you're **manifesting your imagination into reality**.
**Traditional Development**:
```
Spec → Implementation → "It works" → Satisfaction (minor)
```
**EDAD**:
```
Deep Imagination → Expectation → Implementation → Reality Matches Imagination → Satisfaction (MASSIVE)
```
### Why the Satisfaction is So Large
**1. You Imagined It First**
- You spent time vividly imagining the completed system
- You envisioned the user experience, the behavior, the feeling
- When it matches: profound satisfaction of creation
**2. Your Will Manifested**
- Not following someone else's spec
- Not implementing a vague requirement
- YOUR imagination, YOUR expectation, became real
- This is deeply satisfying to the human psyche
**3. Feedback Loop**
- High satisfaction → More energy for next cycle
- Low satisfaction → Signal that expectations were wrong, need to revisit imagination phase
- Satisfaction becomes your compass for quality
### Satisfaction as a Development Tool
**Satisfaction is not just a reward—it's diagnostic**:
**High Satisfaction**:
- ✓ Your imagination was realistic
- ✓ Your expectations were clear
- ✓ Implementation matched vision
- ✓ You're doing EDAD correctly
- → Continue, build on this success
**Low Satisfaction Despite Success**:
- ✗ Something wrong in imagination phase
- ✗ Expectations didn't capture what you really wanted
- ✗ Gap between imagination and expectation
- → Revisit how you imagine, how you form expectations
**Low Satisfaction Due to Failure**:
- ✗ Expectations were unrealistic
- ✗ Need to adjust imagination or choose different approach
- → Learn and iterate
### The Efficiency-Satisfaction Relationship
EDAD optimizes for **efficiency** (minimum time cost) AND **satisfaction** (expectations realized).
Traditional methods optimize for **predictability** at the cost of both efficiency and satisfaction.
**Why EDAD provides both**:
1. No wasted time on unnecessary process → Efficient
2. Building what you imagined → Satisfying
3. AI handles tedious parts → You focus on creative aspects → More satisfying
4. Rapid iteration → See imagination become real quickly → Continuous satisfaction
**The Trade-off**:
- You give up: Predictable timelines, advance planning
- You gain: Maximum efficiency, massive satisfaction, creative fulfillment
### Practical Application
**Use satisfaction as feedback**:
- End of each day: "Am I satisfied with what got done?"
- End of feature: "Does this match what I imagined?"
- End of project: "Would I do this again?"
**If satisfaction is low, diagnose**:
1. Was my imagination clear enough?
2. Did I choose the right expectation from my imagination?
3. Did implementation drift from expectation?
4. Were my expectations realistic?
**Satisfaction drives iteration**:
- High satisfaction → Confidence in methodology
- Low satisfaction → Learn and adjust
- Over time, satisfaction should increase as you master EDAD
---
## Benefits
### 1. Individual + AI Productivity Multiplier (Efficiency)
This methodology is specifically designed for **single developer + AI agent** workflows. Real-world validation includes:
- Building 100,000+ line production-ready full-stack applications
- Completing in one month what traditionally takes teams several months
- Maintaining high code quality throughout
### 2. Virtual Lab & Remote-First Collaboration
EDAD is particularly well-suited for:
**Virtual Lab Environments**:
- One person owns an entire project or module
- Other team members act as users or advisors
- Feedback loops adjust expectations rather than code
**Remote-Oriented Collaboration**:
- Asynchronous feedback cycles
- Clear ownership boundaries
- Minimal coordination overhead
### 3. Scalable Team Structure
**For large projects**:
- **Product Managers**: Control product-level expectations
- **Individual Engineers**: Control module-level expectations
- **One Person, One Module**: Only one person (and their AI tools) modifies a module at a time
- **Result**: Maximized multi-person collaboration efficiency with minimal merge conflicts
### 4. Clear Responsibility Boundaries
- Each module has a clear owner
- Expectations serve as contracts between modules
- Changes to expectations trigger explicit discussions
- Reduces integration nightmares
---
## Cons and Limitations
### 1. High Developer Requirements
EDAD demands developers with:
- Clear understanding of project goals
- Extensive experience with tech stack choices
- Strong architectural intuition
- Ability to generate multiple solution approaches
- Skill in evaluating trade-offs
**Mitigation**: Build up a library of expectations from past projects. New developers can learn patterns from experienced team members' expectations.
### 2. Difficult Mid-Project Handoffs
When interrupted, projects are challenging to transfer because:
- Much context exists in the original developer's imagination
- Expectations may be incomplete or implicit
- The "why" behind decisions may not be fully documented
**Mitigation**:
- Maintain detailed expectation documents
- Record decision rationale
- Create comprehensive README files for each module
- Regular expectation reviews with team
### 3. Requires Extreme Modularization
Based on Agentic Coding constraints, projects need:
- Highly modular architecture
- Small, focused modules
- Clear boundaries between components
- **Reason**: AI agents perform better on smaller codebases; each agentic coding session should modify small portions
**Mitigation**:
- Invest time upfront in architectural planning
- Use microservices or similar patterns
- Keep modules under ~1000-2000 lines where possible
- Create clear interfaces between modules
### 4. Dependency on AI Capabilities
- Effectiveness limited by AI agent capabilities
- May struggle with cutting-edge or niche technologies
- Requires good prompting skills
---
## Practical Implementation Guide
### Setting Up Your EDAD Environment
1. **Choose Your AI Agent**: Claude, GPT-4, or specialized coding agents
2. **Establish Module Structure**: Design your project with clear module boundaries
3. **Create Expectation Templates**: Standardize how you document expectations
4. **Set Up Verification Systems**: Automated tests, linters, formatters
### Expectation Document Template
**IMPORTANT**: This is a **quick start template** to help you get started, NOT a hard-coded rule. As you master EDAD, your expectations may be:
- Conversational prompts to AI agents (like the example below)
- Mental notes you iterate on
- Rough sketches
- Mixed expectation + implementation details
- Anything that captures YOUR thinking
The template below is training wheels. Use it until you develop your own natural style.
```markdown
## Feature: [Feature Name]
### Expectation
[Describe what the feature does from the user's perspective]
[Include specific behaviors and edge cases]
### Tech Stack Choice
[Specify chosen technologies and why]
### Implementation Details
[Concrete implementation approach]
[Key algorithms or patterns to use]
### Constraints
[Code quality requirements]
[Performance requirements]
[Compatibility requirements]
### Success Criteria
[How to verify the feature works correctly]
```
**Real-World Example** (KohakuBoard run management redesign):
This is how expectations actually look in practice - a conversational prompt mixing expectation with crucial implementation details:
```
I want to re-design our local log structure and the run id things:
1. in local log, we use <folder>/<project>/<random_str>_<annotation(run_name)>,
this means local log can still have multiple projects, and user can just
use "delete folder" or "rename folder" to "manage runs"
2. random_str is just 4 char (0-9a-z, 36^4 is around 1.6M, enough for
project wise folder)
3. this scheme works for both local and remote (for remote it will be
folder/user/project/...)
4. you need to modify frontend/backend for kobo open, so it have list
project works
5. you need to modify logger/server to handle this folder naming correctly
6. the "run_id" is still the folder name, but now we use the run_id as
title, the pre-defined run_name as subtitle, bcuz in local dir user
may change the folder name directly
7. ensure all related stuff also works for this (like kobo inspect)
Try to investigate our current codebase and give me your plan on
implement this feature
```
**What makes this EDAD-style**:
- **Expectation clear**: Users manage runs via folder operations (delete/rename)
- **Crucial logic decided by human**: 4-char random string (with reasoning: 36^4 ≈ 1.6M)
- **Reality-aware**: Point 6 acknowledges users may rename folders directly
- **AI's job clear**: Investigate codebase, create implementation plan
- **Not template-following**: Natural communication that captures thinking
Notice:
- No rigid structure
- Mixes "what" (expectation) with "how" (implementation details)
- The "how" included is YOUR decision (crucial logic), not constraining AI
- Conversational, not formal
- This is what EDAD looks like in practice
### Hierarchical EDAD Loops
**CRITICAL PRINCIPLE**: There is NO fixed daily workflow in EDAD. The methodology operates on hierarchical, variable-length loops that scale with complexity.
#### The Hierarchy
**Project-Level Expectations (Months to Years)**
```
Goal: "Create HuggingFace + WandB alternative"
├─ Imagination: Years of vision
├─ Expectation: Complete ecosystem with multiple components
└─ Loop Duration: Months to implement, years to evolve
```
**Module-Level Expectations (Weeks to Months)**
```
Sub-Goal: "Build high-performance ML experiment tracker"
├─ Imagination: Weeks of design consideration
├─ Expectation: KohakuBoard with zero-overhead logging
└─ Loop Duration: Weeks to implement core, months to mature
```
**Feature-Level Expectations (Days to Weeks)**
```
Sub-Sub-Goal: "Implement WebGL-based chart rendering"
├─ Imagination: Days of UX consideration
├─ Expectation: Handle 100K+ datapoints smoothly
└─ Loop Duration: Days to implement, weeks to refine
```
**Bug/Enhancement-Level Expectations (Hours to Days)**
```
Micro-Goal: "Fix histogram compression algorithm"
├─ Imagination: Hours of problem analysis
├─ Expectation: 99.8% size reduction maintained
└─ Loop Duration: Hours to implement, days to verify
```
#### Practical Examples from Real Projects
**Minimal Loop (Hour/Day Level)**:
- Fix a specific bug discovered in production
- Add a small feature requested by user
- Optimize a performance bottleneck
- **Example**: "Improve CSV export formatting" → Imagination (30 min) → Implementation (2 hours)
**Maximal Loop (Year Level)**:
- Entire ecosystem design and evolution
- Multiple interconnected systems
- **Example**: "Build HuggingFace alternative" → Imagination (years of accumulated frustration with existing tools) → Implementation (2 months of intensive development) → Evolution (ongoing)
#### Key Characteristics
**Inconsistent Loop Lengths**:
- Loops naturally vary from hours to years
- Cannot be forced into sprints or fixed timeframes
- Each loop completes when its expectation is satisfied
- Higher-level loops often contain multiple nested loops
**Parallel Loops**:
- Multiple module-level loops can run concurrently
- Each module owner manages their own loop timing
- Project-level expectations coordinate without synchronizing loops
**Adaptive Rhythm**:
- Developer works at natural problem-solving pace
- Some days: 5 feature-level loops completed
- Other days: Deep dive into single architectural decision
- EDAD embraces this variability rather than fighting it
## Comparison with Traditional Methodologies
### The Fundamental Difference: Mindset Focus
All other "driven" methodologies ignore a basic cognitive reality about human developers. EDAD acknowledges and embraces this reality rather than fighting it.
### Why Humans Cannot Predict Implementation Time
**Two Fundamental Truths**:
**1. If You Can Predict It, You Shouldn't Be Implementing It**
```
Can predict time → You've done this before → Should copy-paste, not re-implement
```
- Predictable tasks are repetitive tasks
- If you know exactly how long something takes, you have a pattern
- The correct response: Reuse existing code, don't rebuild
- **True development**: Building something new, by definition unpredictable
**2. Humans Are Not Gods**
```
Cannot predict bugs → Cannot predict debugging time → Cannot predict total time
```
- You don't know what you don't know
- Bugs emerge from unforeseen interactions
- Debugging time often exceeds implementation time
- Edge cases reveal themselves during implementation
### Why This Matters for Methodology Choice
**Traditional Methodologies** (Waterfall, Agile, etc.):
- Premise: Developers should estimate and predict
- Reality: Developers guess, often incorrectly
- Result: Pressure to meet unrealistic estimates, technical debt, burnout
**EDAD**:
- Premise: Prediction is impossible for new work
- Reality: Focus on efficiency instead of predictability
- Result: Maximum speed, high quality, sustainable pace, high satisfaction
**The Trade-off Is Real**:
- Traditional: Predictable (but slow and stressful)
- EDAD: Efficient (but unpredictable)
- You cannot have both—choose based on your priorities
### Mindset Focus: The Missing Piece
Other methodologies focus on:
- Process (Waterfall)
- Collaboration (Agile)
- Tests (TDD)
- Domain (DDD)
**EDAD focuses on**:
- **Developer's internal mental model** (Imagination → Expectation)
- **Psychological satisfaction** (Seeing expectations realized)
- **Cognitive efficiency** (Let AI handle mechanical work)
- **Natural creative rhythm** (Variable loop timing)
### Why Mindset Focus Enables Efficiency
**Traditional Approach**:
```
External Requirement → Forced Understanding → Implementation → Dissatisfaction
(Not your imagination) → (Not natural) → (Tedious) → (Low energy)
```
**EDAD Approach**:
```
Internal Imagination → Natural Expectation → AI-Assisted Implementation → Deep Satisfaction
(Your vision) → (Your choice) → (Efficient) → (High energy for next cycle)
```
**Key Insight**: When developers build what THEY imagine (not what they're told to build), efficiency and satisfaction both maximize. The methodology simply formalizes this natural creative process.
---
## Comparison with Traditional Methodologies (Detailed)
### vs. Waterfall
- **EDAD**: Expectations evolve dynamically
- **Waterfall**: Fixed requirements upfront
- **EDAD Advantage**: Adapts to changing needs
### vs. Agile/Scrum
- **EDAD**: Individual + AI agent focus, asynchronous
- **Agile**: Team ceremonies, synchronous coordination
- **EDAD Advantage**: No coordination overhead for module owners
### vs. Test-Driven Development (TDD)
- **EDAD**: Expectation-first
- **TDD**: Test-first
- **Synergy**: EDAD expectations can inform test writing
- **Difference**: EDAD includes UX/behavior beyond just correctness
### vs. Domain-Driven Design (DDD)
- **EDAD**: Compatible with DDD
- **Both**: Focus on understanding the problem domain
- **EDAD Addition**: Explicitly leverages AI for implementation
---
## Who Should Use EDAD
### Ideal Use Cases
#### 1. Virtual Labs / Fully Remote Organizations
**Why EDAD Works**:
- Asynchronous by design—no coordination overhead
- Each researcher owns their module completely
- Expectations serve as communication contracts
- No need for daily standups or sprint planning
**Example**: Research lab where each member works on different aspects of a larger project, coordinating through shared expectations rather than meetings.
#### 2. Startups Moving Fast Without Fixed Timelines
**Why EDAD Works**:
- Deliver features as soon as they're ready
- Pivot quickly by updating expectations
- No artificial sprint boundaries
- Ship when quality expectations are met
**Example**: Early-stage startup building MVP, priorities shift weekly based on user feedback, deadlines are "as soon as possible" not "by Friday."
#### 3. Research-Oriented Development
**Why EDAD Works**:
- Exploration phase aligns perfectly with research mindset
- Variable loop timing matches research uncertainty
- Can spend days/weeks on hard problems without guilt
- Focus on "what" (research question) not "when" (deadline)
**Example**: Academic or industrial research where you're implementing novel algorithms or systems, timeline depends on when breakthroughs happen.
#### 4. Open Source Community Projects
**Why EDAD Works**:
- Contributors work at their own pace
- No timeline management needed
- Innovative improvements valued over predictable delivery
- Expectations document "why" for future contributors
**Example**: OSS maintainer adding major features when inspired, community contributors picking up pieces that interest them.
### NOT Recommended For
#### Projects Requiring Predictable Timelines (not faster timelines!)
**Why EDAD Doesn't Fit**:
- EDAD optimizes for **efficiency**, not **predictability**
- You can't predict WHEN something will be done
- Being the most efficient method and being unpredictable are NOT contradictory—both are true
- Multiple people modifying same code simultaneously creates conflicts
- EDAD works best with clear module ownership
**Important Clarification**:
- EDAD is the MOST EFFICIENT method - it minimizes time cost
- BUT you can't predict the actual time cost in advance
- **Key principle**: If you can't EDAD it within a deadline (given it's the most efficient method), you probably can't do it ANY other way either
- The issue is **unpredictability of timing**, NOT speed
- Traditional project management provides predictability at the cost of efficiency
**Example**: Enterprise team where stakeholders need to know "when will this be done?" with confidence 2 months in advance. EDAD can't answer "exactly when", only "as efficiently as possible."
#### Projects Requiring Tight Coordination
**Why EDAD Doesn't Fit**:
- Works best with clear module boundaries
- Struggles when multiple people must modify same code simultaneously
- Handoffs mid-project are difficult
**Example**: Game development where artists, designers, and engineers constantly iterate on same assets.
#### Developers New to the Domain
**Why EDAD Doesn't Fit**:
- Requires extensive experience to generate good expectations
- Imagination phase needs domain knowledge
- Junior developers may struggle with solution choices
**Mitigation**: Pair junior developers with senior EDAD practitioners who can provide expectation templates.
---
## Getting Started with EDAD
### Prerequisites
**Experience Required**:
- 3+ years development experience in your domain
- Familiarity with multiple tech stacks and solution patterns
- Comfort with architectural decision-making
- Understanding of trade-offs in system design
**Mindset Shifts**:
- Accept variable timing—some features take hours, others take months
- Embrace imagination as a legitimate work activity
- Trust expectations over detailed plans
- Let go of predictability in favor of quality
### Your First EDAD Project
#### Step 1: Choose the Right Project
**Good first projects**:
- Side project where only you will work on the code
- Internal tool with flexible timeline
- Open source experiment
- Research prototype
**Avoid**:
- Projects with hard deadlines
- Codebases shared with other developers
- Production systems requiring 24/7 uptime (initially)
#### Step 2: Set Up Your Environment
1. **Choose AI Agent**: Claude, GPT-4, or Cursor (with appropriate model)
2. **Create Expectation Document**: Start a markdown file for expectations
3. **Plan Module Structure**: Design your project with clear boundaries
4. **Set Up Verification**: Tests, linters, formatters
#### Step 3: Your First Loop
**Week 1: Imagination**
- Spend 2-3 days just thinking and visualizing
- Don't write code yet—this feels weird but is crucial
- Ask yourself: "How will this feel when it's done?"
- Sketch out user flows, not implementation
**Week 1-2: Expectation**
- Write down your imagination in structured form
- Use the template provided earlier
- Be specific about behaviors, not implementation
- Include success criteria
**Week 2-3: Problem Solving**
- Now think about "how"
- Identify solutions for each expectation
- Research tech stack options
- Document implementation details
**Week 3-4: Implementation**
- Engage AI agent with expectations + details
- Iterate rapidly
- Don't worry about perfection—trust the loop
**Week 4: Verification & Reflection**
- Does it match your expectations?
- What surprised you?
- What would you do differently?
- Update expectations if needed
#### Step 4: Build Your Expectation Library
As you complete projects, save:
- Expectation templates that worked well
- Common implementation patterns
- Tech stack combinations that succeeded
- Lessons learned documents
Reuse these in future projects to speed up imagination and expectation phases.
### Common Beginner Mistakes
**Mistake 1: Skipping Imagination**
- Symptom: Jump straight to coding
- Fix: Force yourself to spend days imagining first
- Why: Poor imagination → poor expectations → poor implementation
**Mistake 2: Over-Specifying Implementation**
- Symptom: Expectations read like code
- Fix: Focus on behavior and experience, not code structure
- Why: Limits AI agent's ability to find better solutions
**Mistake 3: Forcing Fixed Timelines**
- Symptom: "This feature must be done by Friday"
- Fix: "This feature is done when it meets expectations"
- Why: EDAD's strength is quality, not predictability
**Mistake 4: Working on Shared Codebases**
- Symptom: Merge conflicts, unclear ownership
- Fix: One person per module, clear boundaries
- Why: EDAD works best with clear ownership
**Mistake 5: Over-Documenting Expectations**
- Symptom: Writing detailed specification documents for expectations
- Fix: Keep expectations fluid; document to see your mindset, not to lock it in
- Why: Rigid documentation turns expectations into specs. Your expectations SHOULD shift when you see real code. Document to understand yourself, not to constrain yourself.
### Measuring Success
**Don't Measure**:
- Story points completed per sprint (EDAD has no sprints)
- Predictability of estimates (EDAD optimizes for efficiency, not predictability)
- Velocity trends for timeline prediction (you can't predict WHEN, even if you're being efficient)
**Do Measure**:
**1. Personal Satisfaction (THE MOST CRUCIAL METRIC)**:
- This is the key indicator of EDAD success
- Because EDAD focuses on expectations, achieving them provides massive satisfaction
- When your imagination becomes reality as you envisioned, the satisfaction is profound
- High satisfaction = you're doing EDAD correctly
- Low satisfaction despite achieving goals = something's wrong with the expectation phase
**2. Quality of Delivered Features**:
- Bug rates
- User satisfaction
- How well reality matches your expectations
**3. Time Cost (We Minimize It, Though We Can't Predict It)**:
- Track actual time spent on completed features
- Observe trends: are you getting faster as you build your expectation library?
- Note: You're minimizing time cost, but you'll never know the exact cost next time
- EDAD is the most efficient method, even if unpredictable
**4. Expectation Revision Rate**:
- How often do expectations shift during implementation?
- Should decrease as you improve at imagining
**5. Code Reusability**:
- Can you reuse modules across projects?
- Do your expectations lead to clean abstractions?
**Critical Principle**: EDAD optimizes for efficiency AND satisfaction, not predictability. You minimize time cost without being able to predict it. The massive personal satisfaction from seeing expectations realized is the core reward of this methodology.
### Growing Your EDAD Practice
**Month 1-3**:
- Master basic loop on small projects
- Build expectation library
- Experiment with different AI agents
**Month 4-6**:
- Tackle medium projects (10-20k lines)
- Practice hierarchical loops
- Refine your expectation writing
**Month 7-12**:
- Large projects (50k+ lines) become feasible
- Multiple concurrent module loops
- Mentor others in EDAD
**Year 2+**:
- Complex multi-system projects (like KohakuHub ecosystem)
- Year-long imagination → month-long implementation
- Contribute to EDAD methodology evolution
---
## Future of EDAD
As AI capabilities improve, EDAD will evolve:
### Near-Term
- Better AI understanding of complex expectations
- Improved code generation for entire modules
- Enhanced verification and testing capabilities
### Long-Term
- AI agents that can propose multiple expectation alternatives
- Automated expectation refinement based on usage data
- Integration with no-code/low-code platforms
- Cross-team expectation marketplaces
---
## Conclusion
Expectation Driven Agentic Development represents a paradigm shift in how we build software in the AI era. By focusing on clear expectations, empowering individual developers with AI agents, and embracing dynamic iteration, EDAD enables unprecedented productivity while maintaining high code quality.
The methodology is not for everyone—it requires experienced developers willing to think differently about the development process. But for those who master it, EDAD offers a path to building complex systems faster than ever before, with the creative satisfaction of architecting solutions rather than grinding through implementation details.
**EDAD optimizes for efficiency and satisfaction, not predictability.** It is the fastest method available, even though you cannot predict when you'll finish. The massive personal satisfaction from seeing your imagination become reality is the core reward.
**Start with imagination. End with reality. Let AI bridge the gap.**
For a detailed real-world example of EDAD in practice, see **Appendix A: The KohakuHub Ecosystem** - three interconnected production systems (100,000+ lines) built in 2 months.
---
## About This Methodology
EDAD was developed through practical experience building the KohakuHub ecosystem: three interconnected production systems totaling 100,000+ lines of code, completed in 2 months by one developer leveraging AI agents. It represents learnings from this intensive development period and continues to evolve as the methodology is applied to new projects.
The methodology is particularly well-suited for:
- Virtual laboratories and fully remote research organizations
- Startups prioritizing speed and innovation over predictability
- Research-oriented development where exploration is valued
- Open source projects where contributors work asynchronously
**This is a living methodology. Contributions, refinements, and case studies welcome.**
---
**Author**: KohakuBlueleaf (Shih-Ying Yeh)
**Contact**: kohaku@kblueleaf.net
**Community**: [Discord](https://discord.gg/xWYrkyvJ2s)
*Last Updated: November 2025*
*Version: 1.0*
---
## Appendix A: Real-World Case Study - The KohakuHub Ecosystem
### Overview
**Goal**: Create a self-hosted alternative to HuggingFace and WandB
**Timeline**: 2 months
**Team**: Single developer + AI agents
**Output**: Three interconnected production systems with 100,000+ lines of code
### The Three Systems
#### 1. KohakuHub (~60-70k lines)
**Purpose**: Self-hosted HuggingFace alternative
**Core Expectation**: "Git-like versioning for AI models with drop-in HuggingFace compatibility"
**Key Features Realized**:
- HuggingFace-compatible API (drop-in replacement for `huggingface_hub`)
- Git-like versioning via LakeFS integration
- S3 storage backend (MinIO/AWS S3/Cloudflare R2)
- Native Git clone support with LFS
- Vue 3 web interface with file browser, editor, commit history
- Full-featured CLI tool with interactive TUI mode
- Admin portal for user and repository management
- Organizations with role-based access control
- Quota management system
**Tech Stack**:
- Backend: FastAPI, LakeFS (REST API), PostgreSQL/SQLite
- Storage: S3-compatible (MinIO), LakeFS for versioning
- Frontend: Vue 3
- Pure Python Git server implementation
**EDAD Loop**:
- **Imagination**: Only a few days of focused thinking after years of accumulated frustration with HuggingFace's policy shifts
- **Key Insight**: When your goal is very clear, imagination doesn't need to be long—this is maximum efficiency
- **Expectation**: "Clone HuggingFace repos to my server, version like Git, use standard tools, full API compatibility"
- **Implementation**: 2 months (overlapping with other projects)
- **Verification**: Drop-in compatibility with HuggingFace ecosystem
**Example: DatasetViewer (Feature-Level Loop)**
- **Trigger**: "Want to view datasets without cloning them, with query patterns"
- **Imagination**: 1-2 days thinking about UX - "browse dataset files, preview content, search/filter"
- **Expectation**: "Web interface to explore dataset structure and content without downloading"
- **Implementation**: Few days (FastAPI routes + Vue components + S3 integration)
- **Result**: Can browse and query datasets directly through web interface
#### 2. KohakuBoard (~30-40k lines)
**Purpose**: High-performance ML experiment tracking (WandB alternative)
**Core Expectation**: "Zero training overhead with local-first design"
**Key Features Realized**:
- Non-blocking logging (<0.1ms latency)
- 20,000+ metrics/second sustained throughput
- Background writer process with 50,000 message queue
- Rich data types: scalars, images, videos, tables, histograms
- WebGL-based visualization handling 100K+ datapoints
- Local-first: view experiments with `kobo open`, no server required
- Hybrid storage: KohakuVault (columnar) + SQLite
- Histogram compression: 99.8% size reduction
**Tech Stack**:
- Client: Pure Python with background writer process
- Storage: KohakuVault (custom Rust-based SQLite engine)
- Backend: FastAPI
- Frontend: Vue 3 with Plotly.js WebGL charts
**EDAD Loop**:
- **Imagination**: "What if logging never slowed down training? What if I could view results instantly without a server?"
- **Expectation**: "Logging should return in microseconds, viewer should handle 100K points smoothly"
- **Implementation**: Weeks for core, continuous refinement
- **Verification**: Real training loops with zero overhead, smooth 100K+ point rendering
#### 3. KohakuVault (~15-20k lines)
**Purpose**: High-performance storage library
**Core Expectation**: "SQLite-backed storage that's as fast as in-memory structures"
**Key Features Realized**:
- Rust core with Python bindings (PyO3)
- KVault: Key-value blob storage with B+Tree index
- ColumnVault: Columnar storage for time-series data
- DataPacker: Zero-copy serialization
- Write-back cache: 24k ops/s at 16 KiB payloads
- Column operations: 12.5M ops/s with cache
- CSBTree and SkipList implementations for ordered access
**Tech Stack**:
- Core: Rust with rusqlite
- Bindings: PyO3
- Storage: Single SQLite file with WAL
**EDAD Loop**:
- **Imagination**: "SQLite is perfect for my use case, but I need it to be faster"
- **Expectation**: "Rust-powered I/O with Python ergonomics, cache-aware, microsecond latency"
- **Implementation**: Weeks for core interfaces, ongoing optimization
- **Verification**: Benchmark-driven development, 450x faster than naive approaches
### The Project-Level EDAD Loop
#### Global Imagination (Years)
Years of accumulated experience with ML infrastructure:
- HuggingFace: Great ecosystem, but vendor lock-in, no self-hosting, limited versioning
- WandB: Slow logging, cloud-dependent, expensive for large teams
- Traditional solutions: Complex setup, poor developer experience
**Vision**: "What if I could clone HuggingFace repos like Git repos and track experiments with zero overhead?"
#### Project-Level Expectation (Months)
**Expectation Document (Conceptual)**:
```
System: Self-hosted ML infrastructure
Components:
1. Model/dataset hosting with Git-like versioning
- HuggingFace API compatibility
- Native Git operations
- S3 storage backend
2. Experiment tracking with zero overhead
- Non-blocking logging
- Local-first viewing
- Rich visualizations
3. High-performance storage engine
- SQLite-based
- Rust performance
- Python ergonomics
Success Criteria:
- Drop-in replacement for HuggingFace hub
- Training overhead < 0.1ms
- Handle 100K+ datapoint charts
- 2-month implementation timeline
```
#### Module-Level Loops (Concurrent)
Three parallel EDAD loops ran simultaneously:
**KohakuHub Loop**:
- Weeks 1-2: LakeFS integration expectation & implementation
- Weeks 2-4: API compatibility expectation & implementation
- Weeks 3-6: Git server expectation & implementation
- Weeks 5-8: Web UI expectation & implementation
- Ongoing: Refinement based on usage
**KohakuBoard Loop**:
- Week 1: Non-blocking architecture expectation
- Weeks 1-2: Background writer implementation
- Weeks 2-3: Storage layer expectation (led to KohakuVault)
- Weeks 3-5: WebGL visualization expectation & implementation
- Weeks 5-8: Rich data types & histogram compression
- Ongoing: Performance optimization
**KohakuVault Loop**:
- Week 2: "SQLite isn't fast enough" realization
- Week 2-3: Rust engine expectation & initial implementation
- Weeks 3-4: KVault and ColumnVault interfaces
- Weeks 4-6: Cache system and optimizations
- Weeks 6-8: Advanced features (CSBTree, SkipList)
- Ongoing: Benchmark-driven refinement
#### Feature-Level Examples
**Example 1: Histogram Compression (Day-level loop)**
- **Trigger**: "Histograms taking too much space"
- **Imagination**: "What if I could compress gradients by 99% without losing information?"
- **Expectation**: "Use quantization + variable-length encoding, target 99.8% reduction"
- **Implementation**: 1 day (algorithm design + implementation)
- **Verification**: Benchmark on real gradient data
- **Result**: 99.8% size reduction achieved
**Example 2: DatasetViewer (Week-level loop)**
- **Trigger**: "Need to view dataset contents without cloning entire repo"
- **Imagination**: "Browse dataset files, preview content, filter/search without downloading"
- **Expectation**: "Web interface with file browser, preview support, query patterns"
- **Implementation**: 1 week (backend routes + frontend components + S3 streaming)
- **Verification**: Can browse and query multi-GB datasets without cloning
- **Result**: Full dataset exploration through web UI
**Example 3: WebGL Chart Optimization (Week-level loop)**
- **Trigger**: "Charts lag with 50K+ points"
- **Imagination**: "Commercial platforms handle this smoothly, why can't mine?"
- **Expectation**: "Use Plotly.js WebGL mode, implement smart downsampling"
- **Implementation**: 3 days (research + implementation)
- **Verification**: Test with 100K, 500K, 1M datapoints
- **Result**: Smooth rendering up to 100K+ points
**Example 4: Run Management Redesign (Week-level loop)**
- **Trigger**: "Current run management is clunky, users want simpler workflow"
- **Imagination**: "What if users just... use folders? They already know how to manage folders"
- **Expectation**: Conveyed naturally to AI agent:
```
Local log structure: <folder>/<project>/<4char_random>_<run_name>
Users manage runs by deleting/renaming folders directly
run_id = folder name (reflects reality that users may rename)
Works for both local and remote
```
- **Implementation**: 1 week (frontend + backend + logger modifications)
- **Verification**: Can manage runs via folder operations, all tools (kobo open, inspect) work
- **Result**: Dramatically simpler UX, users manage runs naturally
- **Key**: This shows EDAD in practice - conversational expectation mixed with crucial logic decisions (4-char random, folder structure), not following rigid template
### Key EDAD Patterns Observed
#### 1. Expectation Cascade
Project-level expectation ("HuggingFace alternative") cascaded down:
- → Module expectation ("Git-like versioning")
- → Feature expectation ("LakeFS integration")
- → Implementation detail ("REST API wrapper")
#### 2. Cross-Module Dependencies
KohakuBoard's storage needs led to KohakuVault creation:
- **Original**: Use standard SQLite
- **Reality**: Too slow for 20K ops/sec
- **New Expectation**: Build custom storage engine
- **Result**: KohakuVault became standalone project
#### 3. Expectation Evolution
HuggingFace compatibility expectations evolved:
- **Initial**: "Support basic upload/download"
- **Reality**: Users need full Git operations
- **Revised**: "Add Git clone support"
- **Later**: "Add Git LFS protocol"
#### 4. Variable Loop Timing
- Some features: Hours (bug fixes, small enhancements)
- Core systems: Weeks (background writer, Git server)
- Entire ecosystem: Months (2-month intensive development)
- Ongoing evolution: Years (continuous refinement based on usage)
### Results and Impact
**Quantitative**:
- ~100-130k lines of production code
- 3 interconnected systems
- 2-month development timeline
- Single developer + AI agents
- Zero technical debt accumulation
**Qualitative**:
- Drop-in HuggingFace compatibility achieved
- Zero training overhead in logging
- 100K+ datapoint visualization working smoothly
- Self-hosted infrastructure that actually works
- Active community adoption
**Efficiency Comparison**:
- Traditional team estimate for similar scope: 12-18 months with 5-8 engineers
- EDAD approach: 2 months with 1 developer + AI agents
- Productivity multiplier: ~30-50x
### Lessons Learned
1. **Start with User Experience**: All three systems began with "how will this feel to use?"
2. **Let Expectations Guide Architecture**: KohakuVault emerged from KohakuBoard's performance expectations
3. **Trust the Loop**: When Git server seemed impossible, the EDAD loop found pure Python solution
4. **Embrace Variable Timing**: Some days built entire features, other days just refined one algorithm
5. **Document Expectations, Not Plans**: No Gantt charts, no sprint planning—just clear expectations
6. **AI Agents as Implementation Partners**: Focus on "what" and "why", let AI handle "how"
7. **Integration Over Planning**: Systems naturally integrated because they shared root expectations
---