ouroboros/devtools/e2e_live
Ouroboros 19128ad7f6 fix(e2e_live): SM1 clean-worktree check tolerates the runtime's transient scratch and records the porcelain
rc.15 run3 on b6ac8c13, lane SM1_a1: the reviewed commit landed, and the
post-task promotion enabled a one-shot evolution cycle that started
seconds later in the same clone. Its run_script wrote
<clone>/.ouroboros/tmp_scripts/script_<uuid>.py (the active-workspace
scratch root, tools/shell.py, unlinked in a finally), nothing ignores that
directory, and the stand's worktree_clean_after_commit check — a bare
`git status --porcelain == ""` right after the commit — saw
"?? .ouroboros/" and failed a lane whose commit had left the tree clean.
run2's lanes used run_script 33 and 13 times without tripping it: a race
with the neighbouring task, not a constant. The product side is issue
#701 (the runtime's scratch inside the self-modified worktree).

worktree_after_commit() records the porcelain and the transient entries
as lane facts and counts only the runtime's own `.ouroboros/` scratch as
transient; any other untracked or modified path still fails the check.
A focused test module pins both directions on a throwaway repository.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-09-06 03:34:03 +00:00
..
__init__.py Live E2E stand: devtools/e2e_live runs K staggered isolated servers over the SM1/SW1/SK1 scenario table (F4-A) 2026-09-04 23:37:49 +00:00
run_live_lanes.py fix(e2e_live): reserve the evolution root only for the scenario that absorbs; typed idle reasons relative to the wait 2026-09-06 01:31:11 +00:00
scenarios.py fix(e2e_live): SM1 clean-worktree check tolerates the runtime's transient scratch and records the porcelain 2026-09-06 03:34:03 +00:00
stub_lane.py Live E2E stand: devtools/e2e_live runs K staggered isolated servers over the SM1/SW1/SK1 scenario table (F4-A) 2026-09-04 23:37:49 +00:00
ui_probe.py Live E2E stand: the orphan cmdline pin is procfs-gated; the lazy-open note names SW1 2026-09-05 14:57:14 +00:00