ducoterra
b233c8d714
Build and Push Containers / build-and-push-app (push) Successful in 2m28s
Build and Push Containers / build-and-push-db (push) Successful in 16s
phase: 148_pdf_pages_in_sources
**Phase 148 — final verification pass: complete, 100% green.**
- **Verified (tasks 01–04 already implemented):** page render/persist at index (`_persist_page_copies`, fail-soft, stale-replace, qualifier-loss, prune hook via `_delete_page_copies`); public `GET /api/documents/{id}/pages/{n}` (uuid4-credential, 404-all-non-servable, `image/png` + cache header); `DocContent.page_urls` additive-omitted; shared `renderDocument` strip (lazy imgs, "Page N" captions, text + Summary suppressed, onerror note, createElement-only); migration 0026; `pdf_page_dir` setting; `.env.example` entry
- **Completion criteria:** (1) pictorial + fallback classes get `p{N}.png` + `page_count`, text-heavy gets neither — pinned, pass; (2) unchanged re-sync renders zero (fast path) — pass; (3) changed re-index replaces copies, qualifier-loss/prune delete — pass; (4) route 404 matrix + payload key absent-never-null — pass; (5) modal AND /document.html strip with suppression, text-heavy byte-identical — E2E pass; (6) see below; (7) no completed-phase drift — full suite green
- **Tests:** `uv run pytest --cov=app --cov-report=term-missing` → **3461 passed, 0 failed**, `app/` coverage **99%** (>90%); `uv run pytest tests/e2e/test_pdf_pages_in_sources.py -v --no-cov` → **4 passed** in isolation; `uv run ruff check .` clean; `uv run pyright` → 0 errors, 0 warnings
- **Documentation:** README had **1 pre-existing inconsistency** — the Production Deployment section's standalone `podman run` example (and compose note) omitted the **required** `BOR_ADMIN_PASSWORD`/`BOR_SESSION_SECRET` (the fail-loud boot gate the README's own Admin section documents — the container would refuse to start); fixed with the two `-e` flags + a note for the compose path. All else verified consistent: 70/70 `.env.example` vars documented, all defaults match `config.py`, pages table matches routes, Containerfile/esbuild/uid-10001/healthcheck/entrypoint claims accurate, QA commands match pytest config. **AGENTS.md: verified consistent — no changes needed**
- **Notable:** repo uses `Containerfile` (Podman) — README's `podman build` example is valid as-is; no live infrastructure touched
- **Next pending phase:** `149_sync_progress_box`
2026-10-01 16:58:01 -04:00
..
2026-09-13 19:28:05 -04:00
2026-09-14 15:55:13 -04:00
2026-09-28 11:49:55 -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-28 03:38:14 -04:00
2026-09-14 15:55:13 -04:00
2026-09-14 15:55:13 -04:00
2026-10-01 12:48:04 -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-10-01 16:58:01 -04:00
2026-10-01 11:13:43 -04:00
2026-09-13 23:21:39 -04:00
2026-09-28 21:15:03 -04:00
2026-09-09 14:08:18 -04:00
2026-09-28 22:38:54 -04:00
2026-10-01 04:25:03 -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-10-01 14:23:33 -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-28 21:15:03 -04:00
2026-09-28 21:15:03 -04:00
2026-10-01 14:23:33 -04:00
2026-10-01 16:58:01 -04:00
2026-09-16 15:50:48 -04:00
2026-09-30 19:16:35 -04:00
2026-10-01 01:27:46 -04:00
2026-10-01 01:27:46 -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-28 21:15:03 -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