ducoterra
e0f11e7aa8
Build and Push Containers / build-and-push-app (push) Failing after 2m36s
Build and Push Containers / build-and-push-db (push) Successful in 1m39s
phase: 126_pdf_support
All gates verified green — no code changes were needed on this pass. Final report:
## Phase 126 — PDF support: final verification pass
**Verified (all tasks 01–05 already complete in working tree):**
- `pymupdf` dep in `pyproject.toml`/`uv.lock`; `.env.example` documents the `pdf` token
- `app/rag/pdf.py` (text + image extraction, MIME mapping), page-aware `_chunk_pdf`, importer `_index_pdf_file` + embedded-image pass, archives covered via extension walk
**Test / lint / coverage results:**
- `uv run pytest` → 2997 passed
- `uv run pytest tests/e2e/test_pdf_support.py -v --no-cov` (isolation) → 6 passed
- `uv run pytest --cov=app --cov-report=term-missing` → TOTAL **99%** (>90% gate), 2997 passed
- `uv run ruff check . && uv run pyright` → clean (0 errors)
**Completion criteria:**
1. PDF → doc with text/chunks/embedding/summary — ✅ (integration + E2E Sources-page tests)
2. `BOR_IMAGES=true`: embedded images → standalone image docs — ✅ (integration + E2E chat-chip test)
3. `BOR_IMAGES=false`: images skipped, text indexed — ✅ (both suites)
4. PDF renders as extracted text in viewer — ✅ (E2E)
5. Test/coverage/lint gates — ✅ (above)
6. Commit + phase move — harness handles (per protocol, no `git` on this pass)
**Decisions:** none new; inline `[Embedded image: …]` placeholders were a documented task-04 deviation (simplified spec wins) — not a defect. No defects found; repo left functional with changes in the working tree.
**Next pending phase:** none — `todo/` is empty once 126 is moved.
2026-09-27 09:36:40 -04:00
..
2026-09-13 19:28:05 -04:00
2026-09-14 15:55:13 -04:00
2026-09-14 15:55:13 -04:00
2026-09-25 01:54:23 -04:00
2026-09-25 01:54:23 -04:00
2026-09-09 17:22:24 -04:00
2026-09-27 05:53:12 -04:00
2026-09-14 15:55:13 -04:00
2026-09-14 15:55:13 -04:00
2026-09-26 17:06:09 -04:00
2026-09-06 06:31:31 -04:00
2026-09-15 05:35:05 -04:00
2026-09-13 19:28:05 -04:00
2026-09-27 05:53:12 -04:00
2026-09-25 01:54:23 -04:00
2026-09-13 23:21:39 -04:00
2026-09-24 20:51:39 -04:00
2026-09-09 14:08:18 -04:00
2026-09-13 23:21:39 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 06:57:49 -04:00
2026-08-28 07:02:24 -04:00
2026-09-13 19:28:05 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 06:57:49 -04:00
2026-09-16 06:57:49 -04:00
2026-09-27 09:36:40 -04:00
2026-09-16 15:50:48 -04:00
2026-08-22 01:27:02 -04:00
2026-08-25 20:22:51 -04:00
2026-08-26 18:42:28 -04:00
2026-08-26 18:42:28 -04:00
2026-08-27 01:04:16 -04:00
2026-08-29 21:22:25 -04:00
2026-08-30 01:34:44 -04:00
2026-08-30 23:39:15 -04:00
2026-09-01 03:52:03 -04:00
2026-09-07 12:39:01 -04:00
2026-09-09 17:22:24 -04:00
2026-09-10 16:43:08 -04:00
2026-09-11 00:59:35 -04:00
2026-09-11 22:48:02 -04:00
2026-09-12 21:26:30 -04:00
2026-09-13 19:28:05 -04:00
2026-09-24 20:51:39 -04:00
2026-09-25 01:54:23 -04:00
2026-09-27 05:53:12 -04:00
2026-09-16 15:50:48 -04:00
2026-09-16 15:50:48 -04:00
2026-09-25 05:19:18 -04:00
2026-09-02 15:55:33 -04:00
2026-08-28 07:02:24 -04:00
2026-09-12 16:37:50 -04:00
2026-09-13 23:21:39 -04:00
2026-09-16 06:57:49 -04:00
2026-09-12 15:16:02 -04:00
2026-09-25 01:54:23 -04:00