Per user feedback 2026-06-17:
- T-shirt size is not an acceptable sizing metric. Remove it from
conductor/workflow.md (the policy file), conductor/tracks.md (the
registry), and docs/reports/NEGATIVE_FLOWS_INVESTIGATION_20260617.md.
- Regenerate manualslop_layout.ini to remove 83 stale window references
that pointed to deleted/renamed windows (Projects, Files, Screenshots,
Provider, System Prompts, Discussion History, Comms History, etc.).
Layout now matches the windows registered in src/app_controller.py
_default_windows (lines 1862-1886). Stale window count: 10 -> 3.
T-shirt size removal details:
- conductor/workflow.md: Removed the S/M/L/XL table, the replacement
pattern row, and the 'reasonable effort' guard's reference. Scope
(N files, M sites, N tasks) is the only effort dimension.
- conductor/tracks.md: Removed the T-shirt column from the table header
and removed T-shirt size mentions from the Fable track entry.
- docs/reports/NEGATIVE_FLOWS_INVESTIGATION_20260617.md: Removed the
T-shirt size mention in the follow-up track suggestion.
Layout fix:
- manualslop_layout.ini went from 17,360 bytes (102 windows, 83 stale)
to 3,361 bytes (23 windows, all matching _default_windows). The
stale window warning dropped from 10 windows to 3 (Message, Tool
Calls, Response - these are in _default_windows but reference
separate panels in the layout).
Verification: layout fix did NOT fix the underlying stack overflow crash.
After layout fix, the test still dies with rc=3221225725 (0xC00000FD).
The user noted 'Something more fundamental is wrong.' Investigation
continues; this commit only addresses the explicit ask (remove T-shirt,
fix layout).
User asked to continue investigation of the 3 failing tests in
tests/test_z_negative_flows.py. Ran the test in batched tier-3 mode,
isolated the failure to a native Windows STATUS_STACK_OVERFLOW
(0xC00000FD) in the io_pool worker thread when calling
GeminiCliAdapter.send -> subprocess.Popen -> communicate.
Verified the failure:
- Reproduces 100% on a fresh subprocess (no xdist, no other tests).
- Is NOT caused by the send_result -> send rename (purely mechanical).
- Happens on MOCK_MODE=malformed_json, error_result, AND success
(rules out the exception/traceback construction as cause).
- Adapter body completes normally; process dies immediately after.
- Is the io_pool worker thread's 1MB C stack being exhausted by the
deep call chain (run_with_tool_loop -> asyncio cross-thread
dispatch -> _send -> adapter.send -> subprocess.Popen -> communicate
+ Windows ReadFile/WaitForSingleObject).
Conclusion: pre-existing bug. The test file (originally test_negative_flows.py
from 2026-03-06, renamed to test_z_negative_flows.py on 2026-03-07) is the
ONLY test in the suite that exercises a real subprocess AI call end-to-end
through the io_pool worker. Other tier-3 tests use MockProvider and
short-circuit at the ai_client.send level.
Documented: root cause, reproduction evidence, 4 proposed solutions
(thread stack bump, multiprocessing migration, blocking main thread,
xfail), and a follow-up track suggestion for the long-term fix.
This is an investigation report only; no code changes. The theme fix in
9fcf0517 is unaffected. The rename track in 8c6d9aa0 is unaffected.