VibecoderMcSwaggins commited on
Commit
982c1e5
·
1 Parent(s): 40ca236

docs: Mark P2 round counter bug as FIXED

Browse files

Add Resolution section documenting the semantic progress tracking
implementation that replaced the broken "Round X/Y" display with
honest "Step N: AgentName task completed" format.

docs/bugs/P2_ROUND_COUNTER_SEMANTIC_MISMATCH.md CHANGED
@@ -1,9 +1,11 @@
1
  # P2 Bug: Round Counter Semantic Mismatch
2
 
3
- **Status**: ACTIVE
4
  **Discovered**: 2025-12-05
 
5
  **Severity**: P2 (Display bug, confusing UX but not blocking)
6
  **Component**: `src/orchestrators/advanced.py`
 
7
 
8
  ---
9
 
@@ -261,6 +263,55 @@ The time estimate becomes useless after the first few agent completions.
261
 
262
  ---
263
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  ## References
265
 
266
  - SPEC-18: Agent Framework Core Upgrade (where ExecutorCompletedEvent was introduced)
 
1
  # P2 Bug: Round Counter Semantic Mismatch
2
 
3
+ **Status**: ✅ FIXED
4
  **Discovered**: 2025-12-05
5
+ **Fixed**: 2025-12-05
6
  **Severity**: P2 (Display bug, confusing UX but not blocking)
7
  **Component**: `src/orchestrators/advanced.py`
8
+ **Commit**: `40ca236c refactor(orchestrator): implement semantic progress tracking`
9
 
10
  ---
11
 
 
263
 
264
  ---
265
 
266
+ ## Resolution (2025-12-05)
267
+
268
+ **Implemented**: Domain-driven semantic progress tracking
269
+
270
+ ### What Was Done
271
+
272
+ 1. **Deleted Dead Code**:
273
+ - Removed unused `_get_progress_message` method
274
+ - Removed unused `_EST_SECONDS_PER_ROUND` constant
275
+
276
+ 2. **Added Semantic Agent Mapping** (`_get_agent_semantic_name`):
277
+ ```python
278
+ def _get_agent_semantic_name(self, agent_id: str) -> str:
279
+ """Map internal agent ID to user-facing semantic name."""
280
+ name = agent_id.lower()
281
+ if SEARCHER_AGENT_ID in name:
282
+ return "SearchAgent"
283
+ if JUDGE_AGENT_ID in name:
284
+ return "JudgeAgent"
285
+ if HYPOTHESIZER_AGENT_ID in name:
286
+ return "HypothesisAgent"
287
+ if REPORTER_AGENT_ID in name:
288
+ return "ReportAgent"
289
+ return "ManagerAgent"
290
+ ```
291
+
292
+ 3. **Changed Progress Display**:
293
+ - Before: `"Round {iteration}/{self._max_rounds} (~{est_display} remaining)"`
294
+ - After: `"Step {iteration}: {semantic_name} task completed"`
295
+
296
+ 4. **Changed Initial Thinking Message**:
297
+ - Before: `"Multi-agent reasoning in progress (5 rounds max)... Estimated time: 3-5 minutes."`
298
+ - After: `"Multi-agent reasoning in progress (Limit: 5 Manager rounds)... Allocating time for deep research..."`
299
+
300
+ 5. **Updated Tests**: Changed test mocks to use domain-specific agent IDs (`searcher`, `judge`) instead of arbitrary strings.
301
+
302
+ ### Result
303
+
304
+ - Before: `⏱️ **PROGRESS**: Round 11/5 (~0s remaining)` (confusing, broken math)
305
+ - After: `⏱️ **PROGRESS**: Step 11: ReportAgent task completed` (accurate, professional)
306
+
307
+ ### Design Decision
308
+
309
+ Rather than patching the counter display or trying to track "actual workflow rounds" (which requires deep framework integration), we chose **honest reporting**: Show exactly what happened (which agent completed) without making false promises about progress percentages or time estimates.
310
+
311
+ This follows the Clean Code principle: "Don't lie to the user."
312
+
313
+ ---
314
+
315
  ## References
316
 
317
  - SPEC-18: Agent Framework Core Upgrade (where ExecutorCompletedEvent was introduced)