Skip to content

feat: show in-progress candidates in outer-loop status - #1361

Draft
lukeinglis wants to merge 3 commits into
mainfrom
factory/run-424f9832
Draft

feat: show in-progress candidates in outer-loop status#1361
lukeinglis wants to merge 3 commits into
mainfrom
factory/run-424f9832

Conversation

@lukeinglis

@lukeinglis lukeinglis commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Closes #1360

factory outer-loop status now shows what's happening during evaluation, not just what's finished.

Previously, while candidates were being evaluated, the status output showed Total evaluations: 0 with no indication that work was underway. The only way to see progress was to watch the terminal running evaluate.

Now, running factory outer-loop status /path/to/project from a second terminal shows which candidates are mid-evaluation, what agent is currently running inside each one, how long it's been going, and which worktree it's using:

Total evaluations: 0 (1 in progress)

In progress:
  evolve-gen0-0d4cc86a  [builder]  3m12s  wt-evolve-gen0-0d4cc86a-7a8111fd

Pending: 3

No new flags or setup required — the detection is automatic.

Add worktree scanning and agent phase detection to `factory outer-loop
status` so users can see which candidates are actively being evaluated,
what phase each is in, and how long they've been running.

Closes #1360

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown

Sentrux Quality Report

Absolute

Scanning ....
[scan] git ls-files: 666 total, 652 kept, 14 dropped (ext:14, meta:0, big:0)
[build_project_map] 652 files, 109 unique dirs, 101 cache misses, 2.9ms
[resolve] 1224 resolved, 1636 unresolved (of 2860 total specs)
[resolve_imports] project_map 3.0ms, suffix_idx 1.1ms, suffix_resolve 16.4ms, total 20.5ms
[build_graphs] 652 files | maps 1.9ms, imports 20.7ms, calls+inherit 5.6ms, total 28.2ms | 1223 import, 9478 call, 11 inherit edges
sentrux check — 3 rules checked

Quality: 4478

✗ [Error] max_cc: 3 function(s) exceed max cyclomatic complexity of 30
    factory/cli/_ceo_helpers.py:_validate_ceo_flags (cc=43)
    factory/cli/_ceo_helpers.py:_execute_ceo (cc=43)
    factory/cli/run.py:cmd_run (cc=32)

✗ 1 violation(s) found

Diff (vs base branch)

Scanning ....
[scan] git ls-files: 666 total, 652 kept, 14 dropped (ext:14, meta:0, big:0)
[build_project_map] 652 files, 109 unique dirs, 101 cache misses, 2.8ms
[resolve] 1224 resolved, 1636 unresolved (of 2860 total specs)
[resolve_imports] project_map 3.0ms, suffix_idx 1.0ms, suffix_resolve 16.3ms, total 20.2ms
[build_graphs] 652 files | maps 1.8ms, imports 20.3ms, calls+inherit 5.8ms, total 28.0ms | 1223 import, 9478 call, 11 inherit edges
sentrux gate — structural regression check

Quality:      4479 -> 4478
Coupling:     0.79 → 0.79
Cycles:       4 → 4
God files:    3 → 3

Distance from Main Sequence: 0.38

✗ DEGRADED
  ✗ Complex functions increased: 63 → 64

…ast_agent_phase

The emit_event() call uses agent= kwarg, producing {"agent": "builder"} in
events.jsonl. _get_last_agent_phase() was reading event.get("role") which
always returned None. Updated source and all test fixtures to match the
actual event schema.

Closes #1361
@codecov

codecov Bot commented Aug 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 32.97872% with 63 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.39%. Comparing base (c2d3a94) to head (bd38135).
⚠️ Report is 16 commits behind head on main.

Files with missing lines Patch % Lines
factory/cli/outer_loop.py 32.97% 63 Missing ⚠️

❌ Your patch check has failed because the patch coverage (32.97%) is below the target coverage (79.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1361      +/-   ##
==========================================
- Coverage   84.86%   84.39%   -0.48%     
==========================================
  Files         231      234       +3     
  Lines       25759    25725      -34     
  Branches     4115     4128      +13     
==========================================
- Hits        21861    21711     -150     
- Misses       2922     3039     +117     
+ Partials      976      975       -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…status

When one evaluation worktree existed, all modes in the same generation
matched via the shared prefix (e.g. "evolve-gen0-"), causing them all to
show as "in progress" instead of just the one actually evaluating. Delete
the worktree key from the dict after matching so each worktree can only
match one mode. Adds a regression test with 3 modes and 1 worktree.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lukeinglis
lukeinglis marked this pull request as ready for review August 20, 2026 18:45
@lukeinglis
lukeinglis marked this pull request as draft August 20, 2026 20:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

outer-loop status should show in-progress candidates

1 participant