From 99c90a79a37465ccc19544f38a9dc41c516152c6 Mon Sep 17 00:00:00 2001 From: "duanjialing.777" Date: Sat, 3 Oct 2026 04:02:16 +0800 Subject: [PATCH 1/3] fix(control-plane): skip archive directory fsync on Windows Signed-off-by: duanjialing.777 --- loopx/control_plane/coordination/authority_archive.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/loopx/control_plane/coordination/authority_archive.ts b/loopx/control_plane/coordination/authority_archive.ts index 46fc2c35d0..b963c6d089 100644 --- a/loopx/control_plane/coordination/authority_archive.ts +++ b/loopx/control_plane/coordination/authority_archive.ts @@ -9,6 +9,7 @@ import {authorityStateDelta} from "./authority_state_log.ts"; import {AUTHORITY_ARCHIVE_SCHEMA, archiveCursor as positive, verifyAuthorityArchive, withVerifiedAuthorityArchive, type ArchiveHeader, type AuthorityArchiveSummary} from "./authority_archive_read.ts"; import {checkArchivePage, checkArchivePrefix} from "./authority_archive_audit.ts"; +import {syncAuthorityDirectory} from "./file_authority_store.ts"; export {verifyAuthorityArchive} from "./authority_archive_read.ts"; export type {AuthorityArchiveSummary} from "./authority_archive_read.ts"; @@ -73,8 +74,7 @@ export async function exportAuthorityArchive(store: AuthorityStore, goalId: stri await handle.sync(); await handle.close(); closed = true; const verified = await verifyAuthorityArchive(temporary); await link(temporary, output); - const directory = await open(dirname(output), "r"); - try { await directory.sync(); } finally { await directory.close(); } + await syncAuthorityDirectory(dirname(output)); return verified; } finally { if (!closed) await handle.close(); From 2aef27fa61bef9fbbbbfbe907ae1b223499aed8e Mon Sep 17 00:00:00 2001 From: "duanjialing.777" Date: Sat, 3 Oct 2026 09:40:19 +0800 Subject: [PATCH 2/3] test(todos): align recovery with context title budget The shared Todo context projection now counts its three-character truncation marker inside the 420-character title budget. Update the older recovery assertion and pin the bounded length and truncation signal. Signed-off-by: duanjialing.777 --- tests/control_plane/test_todo_projection_recovery.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/control_plane/test_todo_projection_recovery.py b/tests/control_plane/test_todo_projection_recovery.py index e310471d00..b522352fa2 100644 --- a/tests/control_plane/test_todo_projection_recovery.py +++ b/tests/control_plane/test_todo_projection_recovery.py @@ -132,8 +132,10 @@ def test_long_committed_todo_rebuilds_from_the_fresh_head_without_a_second_creat assert manager["authority_revision"] == before["provider_revision"] assert manager["todos"][0]["todo_id"] == record["todo_id"] assert manager["todos"][0]["title"].startswith("Independent evidence") - # The existing safe formatter appends its marker outside the text budget. - assert manager["todos"][0]["title"] == listed["todo"]["title"][:419].rstrip() + "..." + assert manager["todos"][0]["content_truncated"] is True + assert len(manager["todos"][0]["title"]) == 420 + # The shared context projection counts its marker inside the text budget. + assert manager["todos"][0]["title"] == listed["todo"]["title"][:417].rstrip() + "..." code, create_replay = _cli(registry, *create) assert code == 0 and create_replay["status"] == "replayed", create_replay assert _read(runtime) == before # No new Todo, provider revision or business receipt. From 6c02e3cda421f38713f846b316de0a9c55d7230f Mon Sep 17 00:00:00 2001 From: "duanjialing.777" Date: Sat, 3 Oct 2026 11:47:13 +0800 Subject: [PATCH 3/3] ci: give Python test shards current-suite headroom Recent main and pull-request runs repeatedly reach the 30-minute job limit without a test failure. Raise only the Python shard timeout to 45 minutes while preserving the shard count, worker count, test selection, and aggregate gate. Signed-off-by: duanjialing.777 --- .github/workflows/python-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 704e76c46c..183cbccda7 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -419,7 +419,7 @@ jobs: needs: [changes, chat-bundle] if: needs.changes.outputs.python_tests == 'true' runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 45 strategy: fail-fast: false matrix: