fix(fase1): spike B fan-out measures real conversation bleed, not a counter
/trekreview flagged the Spike B(b) fan-out experiment as BROKEN_SUCCESS_CRITERION (BLOCKER): it asserted a per-client call_count reached 3 on a reused instance vs 1 on a fresh one — a tautology true for any un-reset mutable counter, independent of MAF, that never exercised the real G2/B7 shared-Workflow state-corruption footgun. It was a false-confirm of a de-risk assumption. Rebuilt to observe genuine MAF thread state via the messages each participant RECEIVES (new FakeChatClient.received_texts seam): - shared_instance_conversation_bleed: a reused built ConcurrentBuilder Workflow accumulates the conversation across .run() calls — run N's participants receive runs 0..N-1's prompts/replies (measured [[p0],[p0,p1],[p0,p1,p2]], strictly monotonic) => genuine cross-run contamination. - fresh_instance_conversation_isolation: a fresh instance per run gives each a clean thread => each participant sees only its own project ([[p0],[p1],[p2]]). Assumption now CONFIRMED with a meaningful observable. findings-b.md gains a Method note recording why it was rebuilt; README rows updated. Also fixes the MINOR: a_groupchat.run_live now mkdirs the findings dir before write_text so a post-disposal run does not lose the measured result. Gate green: ruff check + format, mypy src, pytest 48 passed / 1 skipped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fif1r1En5W542HbZV88yMH
This commit is contained in:
parent
b81e22b637
commit
a2dff210ce
6 changed files with 118 additions and 35 deletions
|
|
@ -176,6 +176,10 @@ async def run_live(
|
|||
|
||||
table = render_comparison(mc, single)
|
||||
if write_findings:
|
||||
# Guard the parent dir: the spike may run after the documented disposal
|
||||
# (`rm -rf docs/fase1-spikes`), and a missing dir must not discard the
|
||||
# just-measured live result with a bare FileNotFoundError.
|
||||
_FINDINGS.parent.mkdir(parents=True, exist_ok=True)
|
||||
_FINDINGS.write_text(_findings_doc(table), encoding="utf-8")
|
||||
return {"mc": mc, "single": single, "verdict": verdict(mc, single), "table": table}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue