diff --git a/requirements/functional.rst b/requirements/functional.rst index 951247e..a81c2fe 100644 --- a/requirements/functional.rst +++ b/requirements/functional.rst @@ -433,7 +433,7 @@ Authentication implementation tasks .. fr:: Metadata fetching :id: FR-2_13 - :status: open + :status: implemented :priority: P1 :links: UC-2_3 @@ -446,9 +446,15 @@ Authentication implementation tasks - User reviews and confirms changes before applying - Cover images can be fetched automatically + **Implementation evidence (2026-10-25):** Metadata fetching is implemented through selectable Open Library and + Google Books searches, a reviewable book-edit draft, and fetched cover URLs. + Source review and focused provider/persistence tests passed on 2026-10-25. + See `the criterion-by-criterion closure record + `_. + .. fr:: Physical book tracking :id: FR-2_14 - :status: open + :status: implemented :priority: P1 :links: UC-2_9 @@ -461,6 +467,12 @@ Authentication implementation tasks - Reading status and progress tracking - Location field (e.g., "Shelf 3", "Lent to John") + **Implementation evidence (2026-10-25):** Physical books use the persisted library model alongside digital books. + Manual metadata, location/lending fields, reading status, and page progress + are implemented. Model, library, and editing tests passed on 2026-10-25. + See `the criterion-by-criterion closure record + `_. + ---- 3. Integrated viewer @@ -707,7 +719,7 @@ Authentication implementation tasks .. fr:: Automatic goal progress :id: FR-6_3 - :status: open + :status: implemented :priority: P1 :links: UC-6_2 @@ -720,6 +732,12 @@ Authentication implementation tasks - Pages read updates page-count goals - Progress is calculated in real-time + **Implementation evidence (2026-10-25):** Reader activity feeds live goal projections for completed books, reading + time, and page coverage. Reading-activity and goal tests passed on + 2026-10-25. + See `the criterion-by-criterion closure record + `_. + .. fr:: Goal notifications :id: FR-6_4 :status: open @@ -762,7 +780,7 @@ Authentication implementation tasks .. fr:: Metadata server configuration :id: FR-7_1_1 - :status: open + :status: implemented :priority: P0 :links: UC-7_1 @@ -777,6 +795,12 @@ Authentication implementation tasks - Clear indication when offline or disconnected - Works without metadata server (local-only mode) + **Implementation evidence (2026-10-25):** Official and custom server profiles support URL validation, discovery, + authentication, connection-state presentation, and guest/local-only use. + Server-profile provider and settings-page tests passed on 2026-10-25. + See `the criterion-by-criterion closure record + `_. + .. fr:: File upload :id: FR-7_2 :status: open @@ -824,7 +848,7 @@ Authentication implementation tasks .. fr:: OPDS catalog support :id: FR-7_5 - :status: open + :status: implemented :priority: P2 :links: UC-7_4 @@ -837,3 +861,9 @@ Authentication implementation tasks - Search within catalogs - Download books directly to library - Authentication for protected catalogs + + **Implementation evidence (2026-10-25):** OPDS catalog management, navigation, search, acquisition, and protected + catalog credentials are implemented. The fixture-backed OPDS suite passed + on 2026-10-25. The ten opt-in network smoke cases were not run. + See `the criterion-by-criterion closure record + `_. diff --git a/requirements/non-functional.rst b/requirements/non-functional.rst index 5adccf2..feea4d2 100644 --- a/requirements/non-functional.rst +++ b/requirements/non-functional.rst @@ -596,7 +596,7 @@ missing. See :doc:`index` for status definitions. .. nfr:: Logging and monitoring :id: NFR-9_2 - :status: open + :status: partial :priority: P1 The system shall provide comprehensive logging and monitoring capabilities. @@ -609,9 +609,13 @@ missing. See :doc:`index` for status definitions. - Log rotation and retention policies - Error tracking integration (optional) + **Remaining scope:** Production monitoring tasks below are implemented, but + structured logging and configurable levels across every application component + have not been established. This parent requirement remains open. + .. task:: Deploy self-hosted production observability :id: TASK-OBS-01 - :status: open + :status: implemented :priority: P1 :component: observability :readiness: ready @@ -632,9 +636,16 @@ missing. See :doc:`index` for status definitions. - Restart, redaction, notification, and rollback behavior are verified - Whole-host outage detection and telemetry backups are explicitly deferred + **Implementation evidence:** The remaining production observation gate passed on 2026-10-25. All + eight acceptance checks passed, including full-window sample coverage. + Earlier deployment, browser, notification, restart, redaction, and rollback + evidence remains attached to the task. + See `the completion record + `_. + .. task:: Expose private PowerSync monitoring metrics :id: TASK-OBS-02 - :status: open + :status: implemented :priority: P1 :component: server :readiness: ready @@ -649,9 +660,14 @@ missing. See :doc:`index` for status definitions. - The collector can scrape port 9090 on the private Docker network - Existing public API and synchronization behavior remain available + **Implementation evidence:** Private PowerSync metrics are deployed, with implementation and + production acceptance recorded on the completed task. + See `the completion record + `_. + .. task:: Integrate the observability repository into the workspace :id: TASK-OBS-03 - :status: open + :status: implemented :priority: P1 :component: papyrus :readiness: ready @@ -668,9 +684,15 @@ missing. See :doc:`index` for status definitions. - Only the edge project publishes ports and databases remain private - Existing component changes and deployment data are preserved + **Implementation evidence:** Workspace integration is merged in papyrus#33. The four-project + deployment boundary and workspace tooling checks passed again on 2026-10-25. + The prerequisite production observation gate has also passed. + See `the completion record + `_. + .. task:: Restrict monitoring access to WireGuard :id: TASK-OBS-04 - :status: open + :status: implemented :priority: P1 :component: observability :readiness: ready @@ -692,9 +714,14 @@ missing. See :doc:`index` for status definitions. - Client secrets are never committed or printed and can be revoked individually - Existing public application endpoints and monitoring continue to operate + **Implementation evidence:** WireGuard isolation, real-peer HTTPS access, revocation, and public + service regression acceptance are recorded on the completed task. + See `the completion record + `_. + .. task:: Monitor aggregate app statistics :id: TASK-OBS-05 - :status: open + :status: implemented :priority: P1 :component: observability :readiness: ready @@ -715,3 +742,8 @@ missing. See :doc:`index` for status definitions. - Failed collection preserves the last good snapshot and exposes freshness and failure status - History, storage growth, and recent registration windows are visible without treating gauges as counters - Existing production services, private dashboard access, and alerts remain healthy + + **Implementation evidence:** Aggregate collection, failure handling, production parity, and + authenticated dashboard acceptance are recorded on the completed task. + See `the completion record + `_.