Date: 2026-08-20
Branch: refactor/sync-domain-pipeline (PR #127)
Active Feature: feat-026 / issue #105 — sync architecture refactor
Investigated the failed real-provider CI after the unified planner commit. The move paths passed;
GitHub exhausted two attempts on a 503 and UND_ERR_SOCKET, while GitLab exhausted two attempts
on provider deadline errors. The tests then surfaced secondary count/existence assertions that
hid those original request failures.
Hardened CI with three provider attempts, explicit push-result diagnostics in SyncManager E2E,
and workflow contract coverage. When the shared push/PR concurrency group cancels a duplicate
matrix, its aggregate gate now reports the replacement neutrally and emits run-ci=false, so it
does not leave an additional aggregate red check or run downstream CI twice. Real failures remain
blocking. Updated the real-provider E2E documentation to match.
Committed as 948df28 (fix(ci): harden provider e2e failures) and pushed to
origin/refactor/sync-domain-pipeline. The pre-existing untracked .codex-gitlab.env remains
untouched.
npx eslint . -> PASS, 0 errors
npm run build -> PASS, incl. Obsidian 1.11 compatibility
npx vitest run -> PASS, 56 files / 613 tests
npm run test:e2e -- --provider gitea -> PASS, 2 files / 14 tests; container removed
actionlint v1.7.12 .github/workflows/ci.yml -> PASS, 0 errors
git diff --check -> PASS
real CI run 32338116598 -> PASS after failed-only rerun of a disabled Gitea leg assigned to an offline runner
GitHub/GitLab sandbox branch query -> PASS, no e2e/pr/127 or source-branch refs remain
The AGENTS-required Haiku verifier was unavailable in this environment, so verification ran locally in this session.
Complete the remaining Obsidian desktop/mobile move smoke tests. Verify moving and editing a tracked file appears under Moves and applies as one remote move, while an occupied remote destination remains a skipped conflict.