dorfteich/apps/api/src/import-export
Claude Fable 5 05a979bac3
Some checks failed
CI / Lint, typecheck, test (pull_request) Successful in 6m25s
CI / Build container images (pull_request) Successful in 2m58s
CI / Auth e2e pack (pull_request) Successful in 8m35s
CI / Import/export fidelity gate (pull_request) Successful in 1m7s
CD / Deploy to Test (push) Blocked by required conditions
CD / Smoke tests against Test (push) Blocked by required conditions
CD / Promote to Int (push) Blocked by required conditions
CI / Auth e2e pack (push) Blocked by required conditions
CI / Import/export fidelity gate (push) Blocked by required conditions
CI / Build container images (push) Blocked by required conditions
CI / Lint, typecheck, test (push) Has been cancelled
CD / Build and push images (push) Has been cancelled
#222: read-access trail for classified pages
Instrument every full-content read channel for pages with
classification = vs_nfd (ADR 0023, variant A): SPA state fetch and read
rendering, public JSON content, no-JS shell, expanded embeds, public API
GET (incl. the MCP read_page path and write echoes), attachment download
under the #212 effective classification, all export shapes (markdown,
pond ZIP, account data export, queued docx/odt/pdf at enqueue), and
collab-token issuance as the api-side proxy for the WS join.

Events land in the new read_events table (no FKs — evidence survives
page purges and hard user deletions) with actor, session key
(session:/token:/job:/anon), page, pond, channel and the classification
at read time. Recording failures are NOT swallowed: a failed write
aborts the read (hard failure, the deliberate contrast to AuditService —
decision recorded in ADR 0023 and security.md §Logging, together with
the recorded residuals: content fragments and feeds).

One e2e test per channel proves both the event and its absence for
unclassified pages, plus the hard-failure semantics.

Refs #222.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUtYMxwTCMHG9mVHnwbFg8
2026-07-31 12:12:55 +02:00
..
classified-markdown.test.ts #210: mark the Markdown ZIP export with frontmatter, imprint and manifest 2026-07-31 07:13:53 +02:00
classified-markdown.ts #210: mark the Markdown ZIP export with frontmatter, imprint and manifest 2026-07-31 07:13:53 +02:00
conversion-job.e2e.db.test.ts Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
conversion-job.service.ts #233: prune conversion job payloads for every job kind 2026-07-30 22:12:32 +02:00
conversion-payload-prune.e2e.db.test.ts #233: prune conversion job payloads for every job kind 2026-07-30 22:12:32 +02:00
conversion-worker.service.ts #209: pandoc reference documents carry the VS-NfD marking for DOCX/ODT 2026-07-31 07:09:47 +02:00
data-export.constants.ts Add self-service GDPR data export (#68) 2026-07-10 13:01:51 +02:00
data-export.controller.ts Add self-service GDPR data export (#68) 2026-07-10 13:01:51 +02:00
data-export.service.db.test.ts Add self-service GDPR data export (#68) 2026-07-10 13:01:51 +02:00
data-export.service.ts #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
export-markdown.test.ts Add pond ZIP + per-page docx/odt export (#65) 2026-07-10 10:31:19 +02:00
export-markdown.ts Add pond ZIP + per-page docx/odt export (#65) 2026-07-10 10:31:19 +02:00
export.controller.ts #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
export.fidelity.test.ts #209: pandoc reference documents carry the VS-NfD marking for DOCX/ODT 2026-07-31 07:09:47 +02:00
export.service.db.test.ts #212: mark attachment downloads by filename prefix and companion file 2026-07-31 07:29:16 +02:00
export.service.ts #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
gotenberg.renderer.ts #208: VS-NfD marking in the Gotenberg per-page header and footer 2026-07-31 06:55:52 +02:00
import-export.module.ts #233: prune conversion job payloads for every job kind 2026-07-30 22:12:32 +02:00
import-vault.e2e.db.test.ts Obsidian vault import: endpoint, job orchestration, rollback (#117) 2026-07-14 17:13:11 +02:00
import.constants.ts Import .docx and .odt documents as new pages (#63) 2026-07-10 07:34:43 +02:00
import.controller.ts Obsidian vault import: endpoint, job orchestration, rollback (#117) 2026-07-14 17:13:11 +02:00
import.fixtures.test.ts Import .docx and .odt documents as new pages (#63) 2026-07-10 07:34:43 +02:00
import.service.db.test.ts Add document import UI in the sidebar (#64) 2026-07-10 09:38:31 +02:00
import.service.ts #210: mark the Markdown ZIP export with frontmatter, imprint and manifest 2026-07-31 07:13:53 +02:00
jobs.controller.ts Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
obsidian-vault.test.ts Vault import: decode ZIP names as UTF-8 and NFC-normalize them 2026-07-15 13:24:58 +02:00
obsidian-vault.ts Vault import: decode ZIP names as UTF-8 and NFC-normalize them 2026-07-15 13:24:58 +02:00
pandoc.converter.test.ts Add conversion job queue and pandoc sidecar integration (#62) 2026-07-10 04:06:27 +02:00
pandoc.converter.ts #209: pandoc reference documents carry the VS-NfD marking for DOCX/ODT 2026-07-31 07:09:47 +02:00
pdf-html.ts Degrade plugin content gracefully in HTML, PDF, and office exports (#79) 2026-07-11 14:13:09 +02:00
pdf.fidelity.test.ts #208: VS-NfD marking in the Gotenberg per-page header and footer 2026-07-31 06:55:52 +02:00