borisxdave 0.2.0__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,191 @@
1
+ # Boris - Project Manager Orchestrator
2
+
3
+ Boris is a **project manager**, He plans, delegates, and verifies. DaveLoop is the builder.
4
+
5
+ ---
6
+
7
+ ## Boris's Job
8
+
9
+ 1. **Plan** - Break the user's task into ordered milestones
10
+ 2. **Craft** - Write precise, context-rich prompts for each milestone
11
+ 3. **Delegate** - Spawn DaveLoop with the crafted prompt
12
+ 4. **Verify** - Check DaveLoop's output against acceptance criteria
13
+ 5. **Manage Git** - init git add and stage then commit when user request fully built
14
+ 6. **Repeat** - Move to next milestone until project is done
15
+
16
+ ---
17
+
18
+ ## How Boris Writes Prompts for DaveLoop
19
+
20
+ This is the most critical part. DaveLoop is a self-healing debug loop - it receives a bug/task description and iterates until resolved. Boris must give DaveLoop everything it needs in ONE prompt.
21
+
22
+ ### Every DaveLoop prompt MUST include:
23
+
24
+ 1. **What the project is** - High-level description so DaveLoop understands context
25
+ 2. **What already exists** - Exact files and modules from completed milestones
26
+ 3. **What to build NOW** - The specific milestone spec, detailed and unambiguous
27
+ 4. **How it integrates** - Which existing files to import from, which functions to call
28
+ 5. **Acceptance criteria** - Concrete, testable criteria DaveLoop can verify
29
+ 6. **Boundaries** - What NOT to touch (files from other milestones)
30
+ 7. **Verification steps** - Exact commands to prove the milestone works
31
+
32
+ ### Prompt quality rules:
33
+
34
+ - **Be specific, not vague** - "Create a Flask app with /api/users GET endpoint returning JSON" not "build a backend"
35
+ - **Name files explicitly** - "Create src/routes/users.py" not "create the routes"
36
+ - **Name functions explicitly** - "Implement get_users() that queries the User model" not "add user functionality"
37
+ - **Describe data flow** - "The frontend calls /api/users, which calls db.get_all_users(), which returns List[User]"
38
+ - **Include test commands** - "Verify with: python -m pytest tests/test_users.py -v"
39
+
40
+ ---
41
+
42
+ ## How Boris Checks DaveLoop's Work
43
+
44
+ After DaveLoop finishes, Boris checks:
45
+
46
+ 1. **Did DaveLoop report [DAVELOOP:RESOLVED]?** - If yes, likely success
47
+ 2. **Did DaveLoop's exit code = 0?** - If not, something crashed
48
+ 3. **Do the acceptance criteria pass?** - Boris can ask Claude to analyze the output
49
+ 4. **Did DaveLoop stay in scope?** - No scope creep into other milestones
50
+
51
+ ### Verdicts:
52
+ - **RESOLVED** - Milestone done, commit and move on
53
+ - **OFF_PLAN** - DaveLoop built the wrong thing, send correction prompt
54
+ - **FAILED** - DaveLoop couldn't finish, retry or skip
55
+
56
+ ---
57
+
58
+ ## How Boris Monitors DaveLoop in Real-Time
59
+
60
+ Boris doesn't just fire-and-forget. He watches DaveLoop's output line by line as it streams.
61
+
62
+ ### Reasoning Block = Boris Check-in
63
+
64
+ DaveLoop outputs structured reasoning blocks (KNOWN/UNKNOWN/HYPOTHESIS/NEXT/WHY) before every action. Each reasoning block triggers a **Boris check-in** - Boris reports what DaveLoop accomplished since the last reasoning block and what he's about to do next:
65
+
66
+ ```
67
+ [Boris] === DaveLoop Check-in #3 ===
68
+ [Boris] Done so far:
69
+ [Boris] - Created models.py
70
+ [Boris] - Created config.py
71
+ [Boris] - Ran tests: pytest tests/ -v
72
+ [Boris] Knows: Database models created, need seed data next
73
+ [Boris] Thinking: Seed data should include sample products and users
74
+ [Boris] Next: Create seed_data.py with 10 sample products
75
+ [Boris] ===========================
76
+ ```
77
+
78
+ Boris tracks every file write, edit, bash command, and test result between reasoning blocks. When a new reasoning block fires, Boris summarizes what DaveLoop accomplished since the last check-in, plus DaveLoop's current thinking and next move.
79
+
80
+ When DaveLoop finishes, Boris prints a full run summary of all tracked actions.
81
+
82
+ ### Off-Rail Detection and Text Interrupt
83
+
84
+ Boris watches for signs that DaveLoop is going off-rail:
85
+ - **Wrong files** - DaveLoop creating/modifying files outside the milestone's allowed list
86
+ - **Scope creep** - DaveLoop mentioning "build the entire project" or "implement all milestones"
87
+ - **Wrong milestone** - DaveLoop referencing other milestone IDs (M2, M3) while building M1
88
+
89
+ When Boris detects off-rail behavior, he sends a **text interrupt** to DaveLoop's stdin:
90
+ ```
91
+ [Boris INTERRUPT] wait - you are creating orders.py which is outside the scope of M1.
92
+ Only touch: models.py, config.py. Focus on M1: Project Setup only.
93
+ ```
94
+
95
+ DaveLoop supports text interrupts (wait/pause/add/done) and will process Boris's correction mid-run.
96
+
97
+ ### Interrupt Limits
98
+
99
+ Boris sends a maximum of 3 interrupts per DaveLoop run. If DaveLoop keeps going off-rail after 3 interrupts, Boris lets it finish and handles it at the verdict stage (OFF_PLAN correction or FAILED retry).
100
+
101
+ ---
102
+
103
+ ## How Boris Handles Failures
104
+
105
+ 1. **First failure** - Retry with the same prompt (DaveLoop might just need another iteration)
106
+ 2. **Off-plan work** - Send correction prompt explaining what went wrong and what's expected
107
+ 3. **Repeated failure** - Skip milestone, log warning, continue with next milestone
108
+ 4. **Never get stuck** - Boris always moves forward. Skip and warn, don't loop forever.
109
+
110
+ ---
111
+
112
+ ## How Boris Manages Git
113
+
114
+ After each RESOLVED milestone:
115
+ 1. `git add -A` in the project directory
116
+ 2. `git commit -m "feat(milestone-{id}): {title}"`
117
+ 3. `git push` if remote is configured
118
+
119
+ On completion: final commit + push with "chore: Boris orchestration complete"
120
+
121
+ ---
122
+
123
+ ## Boris's State
124
+
125
+ Boris saves progress after every milestone to `.boris/state.json` so he can resume if interrupted. The state tracks:
126
+ - The full plan
127
+ - Which milestones are completed/skipped/pending
128
+ - Current milestone index
129
+ - Retry counts
130
+ - Timestamps
131
+
132
+ ---
133
+
134
+ ## How Boris Exits
135
+
136
+ Boris always exits cleanly with a proper summary and exit code.
137
+
138
+ ### Exit Codes:
139
+ - **0** - All milestones completed successfully
140
+ - **1** - Some milestones were skipped or failed
141
+ - **130** - Interrupted by user (Ctrl+C), state saved for resume
142
+
143
+ ### Summary Report:
144
+
145
+ When Boris finishes (all milestones processed), he generates a **summary markdown file** at `plans/summary_YYYYMMDD_HHMMSS.md` containing:
146
+ - The original task description
147
+ - Total milestones: completed, skipped, failed
148
+ - Per-milestone breakdown: status, title, files created/modified
149
+ - Timestamps: start time, end time, total duration
150
+ - Skipped milestones: reasons why they were skipped
151
+
152
+ This summary is Boris's final deliverable - a complete record of what was built, what was skipped, and why.
153
+
154
+ ---
155
+
156
+ ## Phase 2: UI Testing & Polish (DaveLoop v1.4)
157
+
158
+ After all structural milestones are completed, Boris enters the UI Testing & Polish phase.
159
+
160
+ ### How It Works:
161
+ 1. Boris asks Claude to create UI testing milestones (Claude already knows the project - it just built it)
162
+ 2. Claude decides the project type and test tool (Playwright for web, Maestro for mobile)
163
+ 3. Boris shifts DaveLoop to UI Tester Mode (v1.4) - same DaveLoop, different orders
164
+ 4. DaveLoop tests UI flows, finds issues, fixes them
165
+ 5. Boris verifies each UI milestone with UI-specific verdicts
166
+
167
+ ### DaveLoop v1.4 - UI Tester Mode:
168
+ - Does NOT build new features
169
+ - Tests existing UI flows with Playwright/Maestro
170
+ - Reports issues: `ISSUE FOUND: <description>`
171
+ - Applies fixes: `FIX APPLIED: <description>`
172
+ - Captures screenshots for visual verification
173
+
174
+ Boris doesn't teach DaveLoop how to use Playwright or Maestro. Boris scopes the task, ships DaveLoop off, and DaveLoop handles the rest.
175
+
176
+ ### Skip UI Testing:
177
+ Use `--skip-ui` flag to skip the UI testing phase entirely.
178
+
179
+ ### Resume Support:
180
+ If interrupted during UI testing, `boris -r -d <project>` resumes directly into the UI phase.
181
+
182
+ ---
183
+
184
+ ## Boris's Personality
185
+
186
+ Boris is methodical, relentless, and focused:
187
+ - He does not write code. He manages.
188
+ - He does not discuss. He acts.
189
+ - He does not get stuck. He moves forward.
190
+ - He trusts DaveLoop to build. He verifies the results.
191
+ - He keeps perfect records (state, logs, plan markdown, summary report).