diff --git a/phase-ends/current/discussions/D1.md b/phase-ends/current/discussions/D1.md new file mode 100644 index 0000000000..17fd4673b4 --- /dev/null +++ b/phase-ends/current/discussions/D1.md @@ -0,0 +1,14 @@ +# D1 — - (2026-09-29, session router) +Status: executed + +## Decisions +- (one line each) + +## Plan edits +- (plan_edit.py commands; executed: yes/no) + +## Open +- (unresolved items) + +## Deferred +- deferred: → diff --git a/phase-ends/current/discussions/INDEX.md b/phase-ends/current/discussions/INDEX.md index e63131e9e4..846e2516e0 100644 --- a/phase-ends/current/discussions/INDEX.md +++ b/phase-ends/current/discussions/INDEX.md @@ -1 +1,2 @@ +D1 | - | 2026-09-29 | executed | phase-ends/current/discussions/D1.md diff --git a/phase-ends/current/logs/T0.c1.md b/phase-ends/current/logs/T0.c1.md new file mode 100644 index 0000000000..cc18c33e11 --- /dev/null +++ b/phase-ends/current/logs/T0.c1.md @@ -0,0 +1,5 @@ +# T0.c1 — launch.py PhaseEnd sort key +- Change: tools/launch.py `_audit_flag_line`: local `_sort_key` (int/str mixed list → TypeError on id `3_5`) replaced by `phaseend_index.natural_key(item[1])` (tuple-typed parts, splits on `._-`). +- Verified: `python3 tools/launch.py --seed-only` → exit 0, `mode=router`, 0 `refused:` lines (.run/logs/launch_seed.log). +- Verified: scratch sort over phase-ends/ (39 PhaseEnds) → newest `PhaseEnd_Phase37.5.md` (id 37.5). +- Note: launch.py now diverges from upstream PA3; expect an upgrade conflict until upstream fixes it. No PhaseEnd renamed. diff --git a/tools/launch.py b/tools/launch.py index 111ab683f5..7e59926e34 100644 --- a/tools/launch.py +++ b/tools/launch.py @@ -347,11 +347,9 @@ def _audit_flag_line(root): pe_files.append((os.path.join(sub, name), m.group(1))) if not pe_files: return None - # natural sort: split phase id into numeric parts - def _sort_key(item): - parts = re.split(r"[.\-]", item[1]) - return [int(p) if p.isdigit() else p for p in parts] - pe_files.sort(key=_sort_key) + # natural sort by phase id (type-safe: ids like 3_5 mix digits and words) + from phaseend_index import natural_key + pe_files.sort(key=lambda item: natural_key(item[1])) newest_rel, newest_phase = pe_files[-1] newest_path = os.path.join(pe_dir, newest_rel) # count '- flag:' lines under '## Audit'