Commit Graph
100 Commits
Author SHA1 Message Date
ed a91c1da33c end of track: test suite log. 2026-06-17 01:43:50 -04:00
ed 511a19aab2 send_result_to_send_20260616 session transcript.
This one was important to keep is it was the first attempt at an autonomous run.
Essentially worked except for a turn exhaustion on ai side (need to tweak some config maybe).
2026-06-17 01:32:07 -04:00
ed 219b653a45 docs(tier2): add track completion report (final verification + handoff)
End-of-track report following the same format as
TRACK_COMPLETION_tier2_autonomous_sandbox_20260616.md. Documents:
- 24-commit inventory (10 atomic renames + 14 plan/script commits)
- All 6 phases completed, all 9 verification flags = true
- Pre-existing failures (7 tests, all credentials.toml, confirmed
  against origin/master baseline where they also fail)
- 2 surgical doc fixes in error_handling.md (deprecation section +
  line 204 contradiction)
- Sandbox enforcement contracts held (4 of 4 hard bans + 4 of 4
  secondary contracts)
- User handoff instructions (fetch + diff + merge + per-commit review)

The track is the first end-to-end test of the tier2_autonomous_sandbox;
this report is the final deliverable for that test.
2026-06-17 01:22:57 -04:00
ed c0e2051ec9 conductor(plan): Mark Phase 6 complete - all track tasks done
Phase 6 tasks (t6_1, t6_2, t6_3) and the phase itself marked completed.
All 16 task entries now have status=completed.
All 6 phase entries now have status=completed.

This is the final state.toml commit for the track.
2026-06-17 01:18:40 -04:00
ed 9a5d3b9c8c conductor(plan): Mark Task 6.3 complete - register in tracks.md
Added entry after the Tier 2 Autonomous Sandbox track (its parent
dependency). Status: shipped 2026-06-17. Notes: 6 phases, 10 atomic
rename commits, 37 files modified, 0 new/deleted. Test inventory:
100/101 pass in renamed files; 7 broader pre-existing failures all
due to missing credentials.toml (confirmed against origin/master).
2026-06-17 01:18:02 -04:00
ed 5a58e1ceaf conductor(plan): Mark Task 6.2 complete - metadata.json to status=shipped
Track marked shipped 2026-06-17. All 6 verification criteria evaluated
with PASS/EXCEEDED/READY status and notes. 7 pre-existing test failures
documented with root cause and pre_existing_failures_remaining flag.

Risk register updated: scope_creep=none, behavior_change=none,
doc_drift=medium (error_handling.md deprecation section required
surgical rewrite to historical note).

No deferred_to_followup_tracks (this track completed cleanly).
2026-06-17 01:16:43 -04:00
ed aad6deffcb conductor(plan): Mark Task 6.1 complete - state.toml updated
All 16 task entries now have status=completed and commit_sha.
All 6 phases marked completed (phase_6 in_progress pending metadata+tracks.md).
All 9 verification flags = true.
All 6 enforcement_stack flags = true (sandbox contracts exercised).

Added [notes] section documenting:
- Phase 4 file count discrepancy (22 actual vs 24 spec)
- error_handling.md deprecation section replacement
- Pre-existing test failures (unrelated to track)
- MCP edit_file unreliability + Python fallback
2026-06-17 01:15:33 -04:00
ed d86131d951 conductor(plan): Mark Task 5.2 + 5.3 complete (Phase 5 verification)
Final grep: 0 send_result in active code. 3 historical refs in
error_handling.md (intentional, in the 'Historical deprecation' note).

Test verification: 100/101 tests pass in the 26 files renamed by this
track. 1 pre-existing failure in test_headless_service.py due to
missing credentials.toml (verified against origin/master baseline
where it also fails - unrelated to the rename).
2026-06-17 01:14:24 -04:00
ed ea7d794a6b conductor(plan): Mark Task 5.2 + 5.3 complete (Phase 5 verification done)
Final grep: 0 send_result in active code. 3 historical refs in
error_handling.md (intentional, in the 'Historical deprecation' note).

Test verification: 100/101 tests pass in the 26 files renamed by this
track. 1 pre-existing failure in test_headless_service.py due to
missing credentials.toml (verified against origin/master baseline
where it also fails - unrelated to the rename).

7 broader suite failures all pre-existing (all FileNotFoundError on
credentials.toml, confirmed against origin/master baseline).

Track verification:
- git grep send_result: 0 in active code (3 historical intentional)
- Full test suite: matches pre-rename baseline (7 pre-existing failures
  unrelated to the rename, 0 new regressions)
2026-06-17 01:13:25 -04:00
ed 5cc422b34b conductor(plan): Mark Task 5.1 complete (Phase 5 docs done) 2026-06-17 00:51:07 -04:00
ed 9b5011231c docs(ai_client): rename send_result to send in 3 current docs
Doc consistency: guide_ai_client.md, guide_app_controller.md, and
the error_handling styleguide now reference the new symbol name.

Also fixes two consistency issues in error_handling.md introduced by
the mechanical rename:
1. The 'Deprecation: send -> send_result' section (lines 623-642) was
   rewritten as a 'Historical deprecation (added 2026-06-15, reverted
   2026-06-16)' note that points to the relevant track specs.
2. Line 204 (the 'Current State Audit' summary for src/ai_client.py)
   had a self-contradictory claim ('send() is the new public API;
   send() is @deprecated') after the rename. Updated to describe
   the canonical public API.

Historical archives (conductor/tracks/*/spec.md, conductor/tracks/*/plan.md,
docs/reports/*) are NOT modified - they document the 2026-06-15
public_api_migration decision and stay as historical record.
2026-06-17 00:50:36 -04:00
ed d17d8743dd conductor(plan): Mark Task 4.1 complete (Phase 4 done) 2026-06-17 00:45:44 -04:00
ed ada9617308 test(ai_client): rename send_result to send in 22 remaining test files
Batch rename of 22 test files. 62 references renamed total.

The full test suite is now GREEN again, matching the pre-rename baseline
from Task 1.1. Pure mechanical rename. No behavior change.

Files affected: test_ai_cache_tracking, test_ai_client_cli,
test_ai_client_result, test_api_events, test_context_pruner,
test_deepseek_provider, test_gemini_cli_* (3 files), test_gui2_mcp,
test_headless_* (2 files), test_live_gui_integration_v2,
test_orchestration_logic, test_phase6_engine, test_rag_integration,
test_run_worker_lifecycle_abort, test_spawn_interception_v2,
test_symbol_parsing, test_tier4_interceptor, test_tiered_aggregation,
test_token_usage.

Note: spec estimated 24 files; actual is 22 (test_deprecation_warnings
no longer exists, and 1 fewer file than spec's list).

Refs: conductor/tracks/send_result_to_send_20260616/
2026-06-17 00:38:29 -04:00
ed 2f45bc4d68 conductor(plan): Mark Task 3.5 + 3.6 complete (Phase 3 done) 2026-06-17 00:35:32 -04:00
ed e8a9102f19 test(ai_client): rename send_result to send in test_orchestrator_pm_history
4 references renamed. Test file state: GREEN. 3 tests pass.

Phase 3 complete (all 5 high-impact test files green).
2026-06-17 00:34:37 -04:00
ed 53b35de5c6 conductor(plan): Mark Task 3.4 complete 2026-06-17 00:34:00 -04:00
ed 423f9a95b0 test(ai_client): rename send_result to send in test_conductor_tech_lead
11 references renamed (planned 8; the count grew with the @patch pattern + local var name).
Test file state: GREEN. 9 tests pass.
2026-06-17 00:33:36 -04:00
ed 58fe3a9cb5 conductor(plan): Mark Task 3.3 complete 2026-06-17 00:33:00 -04:00
ed 4393e831b0 test(ai_client): rename send_result to send in test_ai_loop_regressions_20260614
13 references renamed (planned 12; one extra found in a comment).

Test function test_fr2_send_result_callable_in_app_controller_namespace
renamed to test_fr2_send_callable_in_app_controller_namespace.

7 tests pass.
2026-06-17 00:32:33 -04:00
ed 6dbba46a25 conductor(plan): Mark Task 3.2 complete 2026-06-17 00:31:33 -04:00
ed 5e99c204a3 test(ai_client): rename send_result to send in test_orchestrator_pm
14 references renamed (decorators + parameter names + assertions).
Test file state: GREEN. 3 tests pass.
2026-06-17 00:30:48 -04:00
ed f0663fda6a conductor(plan): Mark Task 3.1 complete 2026-06-17 00:29:54 -04:00
ed 3e2b4f74ba test(ai_client): rename send_result to send in test_conductor_engine_v2
22 references renamed (mostly monkeypatch.setattr calls + comments).
Test file state: GREEN. All 10 tests in this file now pass.
2026-06-17 00:29:21 -04:00
ed d714d10fd4 conductor(plan): Mark Task 2.1 complete 2026-06-17 00:28:17 -04:00
ed d87d909f7b refactor(ai_client): rename send_result to send in 5 src/ call sites
Renames 10 references across app_controller, conductor_tech_lead,
mcp_client (docstring example), multi_agent_conductor, orchestrator_pm.

5 call sites in ai_client.send_result(...) -> ai_client.send(...)
3 print strings mentioning send_result
1 docstring comment (conductor_tech_lead)
1 docstring example (mcp_client) 'src.ai_client.send_result' -> 'src.ai_client.send'

Test suite state: still red, but all src/-level call sites are now
renamed. Remaining failures are in test files (mocks and patches
that still reference send_result).

Refs: conductor/tracks/send_result_to_send_20260616/
2026-06-17 00:27:47 -04:00
ed 4a59567939 conductor(plan): Mark Task 1.1 complete 2026-06-17 00:26:05 -04:00
ed 5351389fc0 refactor(ai_client): rename send_result to send (the impl, TDD red moment)
The TDD red moment. The implementation is renamed but the call sites
in src/, tests/, and docs still use send_result. Subsequent commits
rename the call sites and progressively move the test suite back to
green.

10 references renamed in src/ai_client.py:
- 4 'Called by: send_result' docstring tags in private provider helpers
- 1 function definition (def send_result -> def send)
- 1 [C: ...] SDM tag referencing test function names
- 2 monitor component names (start_component / end_component)
- 2 error source strings (CONFIG + INTERNAL)

Also adds scripts/tier2/apply_t1_1_edits.py - the helper script that
applied the 10 edits. Kept in scripts/tier2/ as a record of the
mechanical change pattern.

Refs: conductor/tracks/send_result_to_send_20260616/
2026-06-17 00:23:16 -04:00
ed c1d9a966d7 conductor(plan): Rename send_result to send (sandbox test track)
The first end-to-end test of the tier2_autonomous_sandbox_20260616
sandbox. Pure mechanical rename: ai_client.send_result to ai_client.send
across 38 active files (6 src/, 29 tests/, 3 current docs). 10 atomic
commits across 5 phases. No behavior change; no new tests; the existing
test suite is the safety net.

Phase structure:
- Phase 1: rename src/ai_client.py (TDD red moment)
- Phase 2: rename 5 other src/ files (batch)
- Phase 3: rename top 5 test files (one commit per file)
- Phase 4: rename 24 remaining test files (batch)
- Phase 5: rename 3 current docs + final verification
- Phase 6: update state + metadata + register in tracks.md

Historical archives (conductor/tracks/*/spec.md, conductor/tracks/*/plan.md,
docs/reports/*) are NOT modified per spec section 7.
2026-06-16 23:52:59 -04:00
ed 9ba61d43d3 docs(tier2): add track completion report (final verification + spec coverage matrix) 2026-06-16 23:29:00 -04:00
ed 00c6922c0b conductor(plan): mark tier2_autonomous_sandbox_20260616 as complete (all 9 phases done) 2026-06-16 23:23:28 -04:00
ed eedbfa1180 conductor(plan): update metadata.json to status=shipped + actual test counts 2026-06-16 23:22:24 -04:00
ed 2f79f19989 conductor(plan): register tier2_autonomous_sandbox_20260616 in tracks.md 2026-06-16 23:21:21 -04:00
ed 8bf7cd175b docs(tier2): add user guide for Tier 2 autonomous sandbox 2026-06-16 22:48:13 -04:00
ed 3e17aa6c8b test(tier2): add smoke e2e test (opt-in, double-gate TIER2_SANDBOX_TESTS+TIER2_SMOKE) 2026-06-16 22:26:04 -04:00
ed 5b6e7db174 test(tier2): add sandbox enforcement test (pre-push hook refuses push) 2026-06-16 20:25:44 -04:00
ed 5d150dc6e0 test(tier2): add bootstrap -WhatIf test (opt-in via TIER2_SANDBOX_TESTS) 2026-06-16 20:01:32 -04:00
ed 37eafc008e test(tier2): add trivial smoke track for e2e test (force-added, fixture) 2026-06-16 19:57:36 -04:00
ed cb7c82008e test(tier2): add tier2_sandbox and tier2_smoke pytest markers 2026-06-16 19:56:20 -04:00
ed e487d34b40 feat(tier2): add post-checkout detection hook (logs to tier2_checkout_log.txt) 2026-06-16 19:51:16 -04:00
ed 01be39236b feat(tier2): add pre-push hook that refuses all pushes 2026-06-16 19:50:58 -04:00
ed cba5457b9d feat(tier2): add run_tier2_sandboxed.ps1 launcher with restricted token (skeleton) 2026-06-16 19:49:47 -04:00
ed a9be60ae50 feat(tier2): add setup_tier2_clone.ps1 bootstrap script with -WhatIf support 2026-06-16 19:47:06 -04:00
ed 796da0de60 feat(tier2): add run_track.py CLI with init/status/report modes + git fetch/switch 2026-06-16 19:27:08 -04:00
ed 9964ad3b3e test(tier2): add 12 slash command + agent + config spec contract tests 2026-06-16 19:23:10 -04:00
ed 154a370728 feat(tier2): add opencode.json.fragment with deny rules + path allowlist 2026-06-16 19:19:37 -04:00
ed 016381c4ff feat(tier2): create tier2-autonomous agent profile template 2026-06-16 19:18:36 -04:00
ed 7380e23bc0 feat(tier2): create tier-2-auto-execute slash command template 2026-06-16 19:17:41 -04:00
ed 73ab2778ca feat(report): implement write_failure_report + 8 tests, 100% coverage 2026-06-16 19:13:30 -04:00
ed 5ca8444f35 test(report): add report writer tests (red, opt-in via TIER2_SANDBOX_TESTS=1) 2026-06-16 19:10:22 -04:00
ed 2dbfaeb60e test(failcount): add 13 unit tests + 6 coverage tests; 100% coverage achieved 2026-06-16 19:06:09 -04:00
ed 190766fe03 feat(failcount): add default failcount.toml thresholds 2026-06-16 19:01:31 -04:00
ed fc92e1aa74 feat(failcount): add FailcountState + FailcountConfig dataclasses + all stub functions 2026-06-16 18:59:38 -04:00
ed e646067a8a test(failcount): add test_initial_state_zero (red) 2026-06-16 18:58:00 -04:00
ed 9f2ff29c2e feat(tier2): create scripts/tier2/ package 2026-06-16 18:57:09 -04:00
ed e060399579 conductor(plan): add state.toml for tier2_autonomous_sandbox track
44 tasks across 9 phases, all pending. Tracks:
- failcount unit test progression (13 target)
- slash command spec tests (11 target)
- report writer tests (4 opt-in)
- bootstrap test (1 opt-in)
- sandbox enforcement test (1 opt-in)
- smoke e2e test (1 opt-in, double gate)

Enforcement stack contract: 9 flags tracking the 4 git bans + filesystem
boundary + 3 hook installs + OpenCode deny rules + Windows restricted token.
Final verification requires all 9 enforcement flags = true.

status: active, current_phase: 0, blocked_by: none, blocks: none
2026-06-16 18:51:42 -04:00
ed 2551ff18c7 no t-shirt nonsense (agents.md) 2026-06-16 18:47:50 -04:00
ed 6a26713d74 conductor(plan): Tier 2 autonomous sandbox - implementation plan + metadata
9 phases, 30+ tasks, scope-only (no T-shirt size per user feedback):
- Phase 1: failcount module (15 TDD tasks, 13 unit tests, 100% coverage target)
- Phase 2: failure report writer (4 sections, opt-in tests)
- Phase 3: slash command + agent + opencode.json.fragment templates (11 spec tests)
- Phase 4: run_track.py CLI entry point (duplicates slash command protocol)
- Phase 5: setup_tier2_clone.ps1 bootstrap (idempotent, -WhatIf support)
- Phase 6: run_tier2_sandboxed.ps1 launcher (restricted token skeleton v1)
- Phase 7: git hooks (pre-push refuses all pushes, post-checkout logs)
- Phase 8: opt-in tests (TIER2_SANDBOX_TESTS=1, TIER2_SMOKE=1)
- Phase 9: user guide + tracks.md registration + metadata

Key contracts:
- FailcountState dataclass with 3 signals (red/green/no_progress)
- Result-style with to_dict/from_dict for state persistence
- Atomic write via tmp + os.replace
- 3-layer enforcement: OpenCode permission system + Windows restricted token + git hooks
2026-06-16 18:46:36 -04:00
ed 568804c7d9 conductor(spec): drop T-shirt size per user feedback 2026-06-16 18:38:09 -04:00
ed 024938bd46 conductor(spec): Tier 2 autonomous sandbox track spec 2026-06-16 18:31:48 -04:00
ed 88e44d1c0e docs(report): add session report (audit + migration plan + tech-rot prevention) 2026-06-16 10:48:15 -04:00
ed b90d4bdd4e feat(scripts): add --ci alias for --strict + CI-gate doc updates 2026-06-16 10:40:21 -04:00
ed ce85c379ad docs(agents): add Convention Enforcement section at the top (4 mechanisms) 2026-06-16 10:37:35 -04:00
ed 734840375f docs(guidelines): add AI Agent Obligations section with 4 enforcement audit scripts 2026-06-16 10:35:55 -04:00
ed ef1b0a1c6d docs(styleguide): add AI Agent Checklist section against tech rot 2026-06-16 10:29:26 -04:00
ed 4a55a14fc0 conductor: register result_migration_20260616 in tracks.md (umbrella + 5 sub-tracks) 2026-06-16 10:26:10 -04:00
ed 4cf885da90 docs(workflow+agents): add HARD BAN on day estimates + Tier 1 Track Initialization Rules section 2026-06-16 10:16:49 -04:00
ed ed6602274d docs(tracks): strip day estimates from exception_handling_audit + rag_test_failures (Tier 1 rule) 2026-06-16 10:16:17 -04:00
ed 4c0b19b4db conductor(track): spec/plan/metadata for result_migration_20260616 (5 sub-tracks, NO day estimates) 2026-06-16 10:15:46 -04:00
ed 4521a7df96 feat(scripts): add --summary and --by-size modes to exception_handling audit 2026-06-16 09:41:20 -04:00
ed 01fbd62a3f conductor(track): mark exception_handling_audit_20260616 as completed 2026-06-16 09:10:14 -04:00
ed 4b8363bd71 conductor: register exception_handling_audit_20260616 in tracks.md 2026-06-16 09:09:34 -04:00
ed 3c59e24162 docs(report): add exception handling audit report (211 violations across 42 files) 2026-06-16 09:07:42 -04:00
ed 4209523228 docs(app_controller+guidelines): add Exception Handling section + audit script cross-reference 2026-06-16 09:07:24 -04:00
ed b447f66818 docs(styleguide): add 5 sections clarifying the convention's boundaries 2026-06-16 09:06:54 -04:00
ed 9a04153abd feat(scripts): add exception_handling audit script (10-category classification) 2026-06-16 09:06:25 -04:00
ed 3c267f6b9c conductor(track): metadata.json for exception_handling_audit_20260616 2026-06-16 09:05:59 -04:00
ed a33bfb0abd conductor(track): plan for exception_handling_audit_20260616 (5 phases, ~12 tasks) 2026-06-16 09:05:40 -04:00
ed e81413a2cd conductor(track): spec for exception_handling_audit_20260616 (audit + doc clarification) 2026-06-16 09:05:19 -04:00
ed 3d35bb5b3f todo 2026-06-16 01:03:59 -04:00
ed ff91c4e8b0 docs(report): add completion report for rag_test_failures_20260615
Comprehensive 12-section completion report following the format of
TRACK_COMPLETION_ai_loop_regressions_20260615.md. Documents:

- 4 atomic commits, 1288+4+0 fully green baseline
- 2 defensive guards in src/rag_engine.py (lines 150 and 331)
- 3 new unit tests in tests/test_rag_sync_none_error.py
- 4 plan deviations (spec wrong about root cause, test_rag_visual_sim
  was already passing, traceback diagnostic was a dead end, temp dir
  cleanup retry loop for Windows)
- 5 followup recommendations for Tier 1 review
2026-06-16 00:36:24 -04:00
ed ba04363003 conductor(track): mark rag_test_failures_20260615 as completed
Updated metadata.json: status=completed, completed_at=2026-06-15,
verification_criteria filled with actual results.

Updated tracks.md: status=shipped, 4-commit summary, test file added.

Final result: 1288 pass + 4 skip + 0 fail. All 11 batched test tiers pass
in 873.6s. First fully green baseline since 2026-06-12.
2026-06-16 00:31:26 -04:00
ed d89c58103d docs(rag): add troubleshooting section for NoneType.get error
Documents the two bugs fixed in the rag_test_failures_20260615 track:
1. get_all_indexed_paths: m.get('path') failing on None metadata
2. _validate_collection_dim_result: 'if not embeddings' raising
   ValueError on non-empty numpy arrays

Also documents the 'no such table: tenants' chromadb corruption
symptom (wipe .slop_cache/chroma_* to recover).

Plus: 'rag_status' shows 'error: ' prefix is the failure indicator;
the actual error message is the part after the prefix.
2026-06-16 00:28:53 -04:00
ed 6a0ac35738 conductor(checkpoint): Phase 3 complete - RAG test failures fix verified
All 11 batched test tiers pass in 873.6s (333 files):
  tier-1-unit-comms (6)  tier-1-unit-core (194)
  tier-1-unit-gui (21)   tier-1-unit-headless (2)
  tier-1-unit-mma (20)   tier-2-mock_app-comms (2)
  tier-2-mock_app-core (16)  tier-2-mock_app-gui (9)
  tier-2-mock_app-headless (1)  tier-2-mock_app-mma (7)
  tier-3-live_gui (55) - includes 3 RAG tests previously failing

Test delta: 1282 + 4 + 3 -> 1288 + 4 + 0 (3 RAG tests fixed + 3 new unit tests)

Phase 3 verification:
- Phase 3.1: full RAG suite (27 tests) passes in 36s
- Phase 3.2: full test suite (1288 pass + 4 skip + 0 fail) in 697s
- Phase 3.3: full batched test suite (11 tiers, 333 files) passes in 873s
2026-06-16 00:26:59 -04:00
ed 355811635d fix(rag): handle None metadata in get_all_indexed_paths and non-empty numpy in dim check
Two bugs in src/rag_engine.py were causing 'NoneType object has no attribute get'
in the live_gui RAG tests (test_rag_phase4_final_verify,
test_rag_phase4_stress):

1. _validate_collection_dim_result:148
   Old:  if not embeddings or len(embeddings) == 0:
   New:  if embeddings is None or len(embeddings) == 0:
   The 'if not embeddings' check raises ValueError('The truth value of an
   array with more than one element is ambiguous. Use a.any() or a.all()')
   when 'embeddings' is a non-empty numpy array (which is the normal case
   after documents are upserted). The exception is caught by the outer
   'except Exception' which returns a non-ok Result, causing __init__ to
   set self.collection = None. Subsequent 'get_all_indexed_paths()' then
   fails with 'NoneType has no attribute get' on self.collection.get().

2. get_all_indexed_paths:334
   Old:  return list(set(m.get('path') for m in res['metadatas'] if m.get('path')))
   New:  return list(set(m['path'] for m in res['metadatas'] if m is not None and m.get('path')))
   When chromadb returns 'metadatas=[None, ...]' (documents upserted
   without metadata), 'm.get('path')' fails with AttributeError on the
   first None element. Adds 'm is not None' guard.

Both fixes are defensive: the conditions that trigger them (orphan docs
without metadata, non-empty embeddings arrays) are normal valid
states that the old code couldn't handle.

New file: tests/test_rag_sync_none_error.py
   3 unit tests covering both bugs:
   - test_dim_check_does_not_raise_on_non_empty_ndarray
   - test_get_all_indexed_paths_handles_none_metadata
   - test_get_all_indexed_paths_returns_paths_with_metadata

Verified:
- 3/3 focused tests pass
- test_rag_phase4_final_verify.py::test_phase4_final_verify PASSES (was failing)
- test_rag_phase4_stress.py::test_rag_large_codebase_verification_sim PASSES (was failing)
- test_rag_visual_sim.py::test_rag_full_lifecycle_sim PASSES (still passing)
2026-06-16 00:09:02 -04:00
ed 29c64a0125 conductor: register rag_test_failures_20260615 in tracks.md + update public_api row 2026-06-15 21:56:20 -04:00
ed 3fc492e302 conductor(track): metadata.json for rag_test_failures_20260615 2026-06-15 21:54:36 -04:00
ed 3aa4cfa133 conductor(track): plan for rag_test_failures_20260615 (5 phases, ~10 tasks) 2026-06-15 21:53:13 -04:00
ed 006df67637 conductor(track): spec for rag_test_failures_20260615 (3 RAG test fixes, single root cause) 2026-06-15 21:51:11 -04:00
ed bc388f11bb docs(report): add deviation #2.5 for test_headless_verification fix
The headless batch hang the user reported was caused by an xdist worker
crash on test_headless_verification_full_run, not a test logic failure.
The same root cause as the 4 Phase 2 follow-ups (mock returns raw string
but production does 'if not result.ok:'), but with a different failure
mode (worker crash that hangs the batched test runner).

Documented in section 3 of the report as deviation #2.5 with:
- Where it went wrong (missed in the 4 follow-ups)
- The specific symptom in the user's session
- The fix (out-of-band commit e35b6a34)
- Lesson for the next spec (verification must include xdist mode)
2026-06-15 21:28:29 -04:00
ed e35b6a34ad test(headless_verification): wrap mock return in Result(data=...)
The test_headless_verification_full_run test in test_headless_verification.py
mocked src.multi_agent_conductor.ai_client.send_result with a return_value
of a raw string. The production code does 'if not result.ok:' which
fails on raw strings with AttributeError.

In xdist mode this caused a worker crash (gw0/gw11: 'node down: Not
properly terminated') that hung the entire tier-1-unit-headless batch
in the batched test runner (~50s+ per batch). The crash was the
worker dying while pytest-master waited for it; the master never
got a clean exit and the run was orphaned until the user's manual
cancel.

The test was missed in the original Phase 2 list (it was an xdist
crash rather than a test logic failure) and in the 4 Phase 2
follow-up commits (which targeted the 4 specific test files the
user reported during the run).

Change: mock_send.return_value = 'Task completed successfully.' ->
         mock_send.return_value = Result(data='Task completed successfully.')

Plus add the Result import.

2/2 tests in test_headless_verification.py now pass under xdist
(was 1/2 + worker crash in xdist). Full headless batch (14 tests)
completes in 18.7s.
2026-06-15 21:26:42 -04:00
ed 99747cafb9 docs(report): add track completion report for public_api_migration_and_ui_polish_20260615
531-line completion report for Tier 1 review covering:
- Goal & scope (per spec)
- 7 phases of delivery (per commit)
- 6 plan deviations to flag (CRITICAL: 7 production-affected test files
  + 4 follow-up mock fixes were missed in the original spec; the user's
  stated mass-rename send_result->send plan; the track was done on
  master not a feature branch)
- Files changed (per category)
- Verification (per the spec's 15 verification criteria)
- Definition of Done
- Recommended next track (send_result -> send rename)
- Tier 1 review checklist
2026-06-15 21:10:10 -04:00
ed bbd4c7b5c0 conductor(track): mark public_api_migration_and_ui_polish_20260615 as completed
- metadata.json: status -> completed
- state.toml: all 7 phases marked completed; all tasks marked completed
  with their commit SHAs
- Includes the 4 Phase 2 follow-up mock fixes for:
  test_conductor_engine_v2.py (10 tests)
  test_context_pruner.py (1 test)
  test_rag_integration.py (1 test)
  test_tiered_aggregation.py (1 test)

Test count: 1286 + 12 newly-passing = 1298 pass; 4 RAG failures deferred.
(Note: 12 newly-passing includes the 6 pre-existing failures from the
spec PLUS 6 more from test_conductor_engine_v2.py and the user's
manual corrections to test_ai_loop_regressions_20260614.py and
test_conductor_engine_v2.py.)

Total commits in this track: ~25 atomic commits + 6 phase checkpoints.
2026-06-15 20:41:12 -04:00
ed 13f32f52e0 test(tiered_aggregation): wrap mock_send return in Result(data=...) (Phase 2 follow-up)
The test_run_worker_lifecycle_uses_strategy test in test_tiered_aggregation.py
mocked src.multi_agent_conductor.ai_client.send_result with a return_value
of a raw string. The production code does "if not result.ok:" which
fails on raw strings.

3/3 tests in test_tiered_aggregation.py pass (was 2/3).
2026-06-15 20:28:41 -04:00
ed 26e1b65298 test(rag_integration): wrap _send_gemini mock return in Result(data=...)
The test_rag_integration test mocks the internal _send_gemini
function to return a raw string. The production code in
app_controller._handle_request_event now does 'if result.ok:'
which fails on raw strings.

Change: mock_provider.return_value = 'Mock AI Response' ->
         mock_provider.return_value = Result(data='Mock AI Response')

Plus add the Result import.

1 test passes (was 1 pre-existing failure).
2026-06-15 20:27:07 -04:00
ed 58576fcba7 test(context_pruner): wrap send_result lambda in Result(data=...) (Phase 2 follow-up)
The test_token_reduction_logging test in test_context_pruner.py
mocked src.ai_client.send_result with a lambda that returned
a raw string. The production code now does "if not result.ok:"
which fails on raw strings.

1 test passes (was 1 pre-existing failure).
2026-06-15 20:25:44 -04:00
ed 64278d5313 test(conductor_engine_v2): wrap mock_send return values in Result(data=...)
The 7 tests in test_conductor_engine_v2.py (already updated to
mock src.ai_client.send_result) were still returning raw strings
from the mocks. The production code in multi_agent_conductor.py
now does "if not result.ok:" which fails on raw strings with
AttributeError.

Changes:
- Add "from src.result_types import Result" import
- Wrap all mock_send.return_value = "..." with Result(data="...") (4 sites)
- Wrap MagicMock(return_value="...") with Result(data="...") (2 sites)
- Wrap side_effect return with Result(data="Success")

10/10 tests pass (was 3/10).
2026-06-15 20:21:46 -04:00
ed 125a226525 was called rest 2026-06-15 20:10:18 -04:00
ed 48b47d250c oops 2026-06-15 20:04:35 -04:00
ed 4419922bce review batch script 2026-06-15 20:02:36 -04:00
ed 25d047fa75 config 2026-06-15 19:56:44 -04:00