ducoterra
0035bdf533
Build and Push Containers / build-and-push-app (push) Successful in 2m25s
Build and Push Containers / build-and-push-db (push) Successful in 12s
phase: 136_force_push_reset
Everything is verified green and consistent. Final report:
**Phase 136 — final verification pass (all tasks already complete in `complete/136_force_push_reset/`):**
- **Verified implemented:** unified ff-or-reset update sequence in `scripts/git_sync.py::clone_or_pull` (phase-135 HEAD guard → shallow self-heal → `fetch origin <ref>` → `merge --ff-only` → on non-ff: SHA capture + `reset --hard FETCH_HEAD` + one WARNING line, returns normally); detached-HEAD fail-loud; `branch=None` legacy `git pull` deliberately gone
- **Completion criteria — all met:**
1. ✅ Force push no longer fails sync (integration `test_clone_or_pull_force_push_resets_to_the_new_head` + API-seam `test_sync_pipeline_survives_a_force_push` + E2E run 2 asserts `success` and KB serves the V2 sentinel)
2. ✅ Unrelated-history force push handled by the same reset (`test_clone_or_pull_unrelated_history_force_push_resets`)
3. ✅ Broken fetch still fails loud (fetch-failure unit pins raise with no merge/reset argv; `test_main_git_failure_aborts_before_import`)
4. ✅ WARNING line pinned: one line, 7-char SHAs, checkout path, `origin/<ref>`, no URL (unit exact-string pin + integration caplog pin)
5. ✅ `uv run pytest --cov=app --cov-report=term-missing` → **3231 passed, app/ 99%**; `uv run pytest tests/e2e/test_force_push_resync.py -v --no-cov` → **2 passed in isolation** (10.6 s)
6. ✅ Phase-135 pins preserved (mismatch guard, `--branch` clone argv, `branch=None` fresh-clone argv all green in the 53-test run)
- **Test/lint results:** `uv run pytest tests/unit/test_git_sync.py tests/integration/test_import_docs_git.py -v` → 53 passed; full suite 3231 passed (72 s); `uv run ruff check . && uv run pyright` → clean (0 errors)
- **Documentation:** README.md git-sources section already updated this phase to the ff-or-reset contract; all `.env.example` vars documented; pages table matches router; AGENTS.md rules and quick-reference commands verified accurate (rule 5 correctly documents the phase-100 §7.1 supersession) — **no changes needed**
- **Notable:** E2E "teeth" verification (fails on pre-phase code) is recorded in the task report; nothing was committed per harness protocol
- **Next pending phase:** `todo/137_pdf_image_context`
2026-09-28 22:38:54 -04:00
..
2026-08-21 13:42:21 -04:00
2026-09-07 12:39:01 -04:00
2026-09-15 03:11:05 -04:00
2026-09-28 11:49:55 -04:00
2026-09-01 23:51:43 -04:00
2026-09-11 22:48:02 -04:00
2026-09-10 16:43:08 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-28 07:49:37 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 22:48:02 -04:00
2026-08-31 01:35:28 -04:00
2026-09-07 12:39:01 -04:00
2026-09-13 19:28:05 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-28 07:49:37 -04:00
2026-09-14 15:55:13 -04:00
2026-09-16 15:50:48 -04:00
2026-09-25 05:19:18 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-08 00:33:21 -04:00
2026-09-12 19:45:00 -04:00
2026-09-25 01:54:23 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 22:48:02 -04:00
2026-09-15 04:16:55 -04:00
2026-09-12 15:56:43 -04:00
2026-09-24 18:50:36 -04:00
2026-09-28 22:38:54 -04:00
2026-09-28 15:39:52 -04:00
2026-09-28 21:15:03 -04:00
2026-09-13 23:21:39 -04:00
2026-09-28 21:15:03 -04:00
2026-09-07 12:39:01 -04:00
2026-09-11 22:48:02 -04:00
2026-09-13 19:28:05 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 06:57:49 -04:00
2026-09-12 21:26:30 -04:00
2026-09-08 09:37:33 -04:00
2026-09-06 06:31:31 -04:00
2026-09-11 22:48:02 -04:00
2026-09-13 23:57:54 -04:00
2026-09-15 00:37:38 -04:00
2026-09-27 05:53:12 -04:00
2026-09-28 07:49:37 -04:00
2026-09-28 13:45:31 -04:00
2026-09-11 22:48:02 -04:00
2026-09-11 22:48:02 -04:00
2026-09-27 21:12:25 -04:00
2026-09-07 12:39:01 -04:00
2026-09-13 19:28:05 -04:00
2026-09-14 08:57:57 -04:00
2026-09-16 15:50:48 -04:00
2026-09-24 18:50:36 -04:00
2026-09-14 23:07:56 -04:00
2026-09-07 12:39:01 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-08 16:02:45 -04:00
2026-09-08 01:56:37 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 22:48:02 -04:00
2026-09-10 16:43:08 -04:00
2026-09-11 22:48:02 -04:00
2026-09-24 18:50:36 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 13:16:20 -04:00
2026-09-28 07:49:37 -04:00
2026-09-12 19:45:00 -04:00
2026-09-16 15:50:48 -04:00
2026-09-28 11:49:55 -04:00
2026-09-28 11:49:55 -04:00
2026-09-07 12:39:01 -04:00
2026-09-28 07:49:37 -04:00
2026-09-16 15:50:48 -04:00
2026-09-07 12:39:01 -04:00
2026-09-15 05:35:05 -04:00
2026-09-12 13:37:19 -04:00
2026-09-16 15:50:48 -04:00
2026-09-25 05:19:18 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 22:48:02 -04:00
2026-09-07 12:39:01 -04:00
2026-09-16 15:50:48 -04:00
2026-09-09 01:45:42 -04:00
2026-09-09 14:08:18 -04:00
2026-09-16 15:50:48 -04:00
2026-08-31 05:20:25 -04:00
2026-09-10 16:43:08 -04:00
2026-09-07 12:39:01 -04:00
2026-09-12 13:37:19 -04:00
2026-09-07 12:39:01 -04:00
2026-09-12 19:45:00 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 15:50:48 -04:00
2026-09-11 22:48:02 -04:00
2026-09-28 18:08:11 -04:00
2026-09-28 03:38:14 -04:00
2026-09-28 03:38:14 -04:00
2026-09-11 22:48:02 -04:00
2026-09-27 23:58:57 -04:00
2026-09-28 03:38:14 -04:00
2026-09-10 16:43:08 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 15:50:48 -04:00
2026-09-07 12:39:01 -04:00
2026-09-07 12:39:01 -04:00
2026-09-12 15:16:02 -04:00
2026-09-15 18:26:38 -04:00
2026-09-13 19:28:05 -04:00
2026-09-24 18:50:36 -04:00
2026-09-05 10:57:07 -04:00
2026-09-05 10:57:07 -04:00
2026-09-15 11:55:59 -04:00
2026-09-25 01:54:23 -04:00
2026-09-11 22:48:02 -04:00
2026-09-12 13:37:19 -04:00