dorfteich/apps/api/src
Claude Fable 5 5de398c435
Some checks failed
CI / Lint, typecheck, test (pull_request) Failing after 4s
CI / Auth e2e pack (pull_request) Has been skipped
CI / Import/export fidelity gate (pull_request) Has been skipped
CI / Build container images (pull_request) Has been skipped
#225: read-trail master switch and written purpose limitation
New instance switch readTrail.enabled, default OFF: read logging is
employee monitoring in a works council's eyes — an ordinary instance
must not surveil reads. Off means no event is written ANYWHERE (no row,
no stdout line, verified by test); the api announces the switch position
once per boot, so an eventless trail is never ambiguous — a gap reads
as "was off", never "was lost".

The written purpose limitation ships as section 7 of the VS-NfD
security documentation (#228): what is recorded (no content, no titles,
no IPs, no fingerprinting), why (evidence for reads of marked content
only — variant A is the technical anchor of the promise), who may read
it (Site Admin, API-only), for how long (readTrail.retentionDays,
audited pruning), and what it may NOT be used for (no performance or
behaviour monitoring). The hardening guide's reference configuration
turns the trail on (reference value true) and points to that text; the
existing trail suites now enable the switch explicitly.

Refs #225.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AUtYMxwTCMHG9mVHnwbFg8
2026-07-31 12:24:57 +02:00
..
admin #224: read-trail storage — partitioning, retention, admin query path 2026-07-31 12:21:45 +02:00
audit #224: read-trail storage — partitioning, retention, admin query path 2026-07-31 12:21:45 +02:00
auth #190: configurable session lifetime with a server-side idle timeout 2026-07-30 11:11:15 +02:00
backup #192: deploy-level backup target allowlist 2026-07-30 12:17:14 +02:00
comments Notify watchers about page changes and comments, with an in-app center (#94) 2026-07-11 23:20:25 +02:00
common #197: security response headers and an explicitly restrictive CORS policy 2026-07-30 17:13:24 +02:00
compaction Fix compaction test Bytes typing for strict typecheck (#40) 2026-07-09 08:23:55 +02:00
config Add backup sidecar: nightly dump, volume archive, prune, status, restore (#83) 2026-07-11 17:29:15 +02:00
favorites Favorites: personal page stars, golden icons, sidebar filter (#132) 2026-07-16 12:03:55 +02:00
files #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
grants Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
health Nextcloud backup target: admin-configured, manual + scheduled uploads, in-app restore (#103) 2026-07-12 10:39:18 +02:00
home Editable landing page for the Site Admin 2026-07-12 23:50:16 +02:00
i18n #154: Aufgabenübersicht als Kern-Block (Seite + Unterseiten) 2026-07-20 01:20:30 +02:00
import-export #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
inspector Add effective-permissions inspector (#57) 2026-07-10 00:00:27 +02:00
labels Wire real permissions into collab tokens and revocation (#53) 2026-07-09 18:48:42 +02:00
legal Add instance legal pages with public rendering and footer links (#82) 2026-07-11 16:40:04 +02:00
links Fix latenten Flake in links.service.db.test (Phantom-Sortierung) 2026-07-19 06:12:55 +02:00
mail #234: retention for mail_outbox 2026-07-30 22:17:28 +02:00
mcp #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
members Add Site-Admin system panel with persistent audit trail (#86) 2026-07-11 20:03:05 +02:00
notifications #188: purpose-bound token keys via HKDF, jose replaces the homegrown JWT 2026-07-30 06:41:11 +02:00
pages #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
permissions #205: classification inherits down the tree; lowering is a guarded, audited act 2026-07-31 06:12:26 +02:00
plugins #200: hard instance-wide plugins.enabled kill switch 2026-07-31 04:42:42 +02:00
ponds #195: trashed content leaves the search index itself 2026-07-30 14:07:34 +02:00
prisma Add Prisma with PostgreSQL, automatic migrations, and /readyz 2026-07-04 19:16:44 +02:00
public #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
public-api #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
quotas Quota foundation: overrides, resolution, race-safe consumption (#22) 2026-07-05 20:55:59 +02:00
rate-limit Add DB-backed rate limiting with guard and decorator 2026-07-05 00:43:54 +02:00
read-trail #225: read-trail master switch and written purpose limitation 2026-07-31 12:24:57 +02:00
scheduler Nextcloud backup target: admin-configured, manual + scheduled uploads, in-app restore (#103) 2026-07-12 10:39:18 +02:00
search #211: classification through feeds, public API, search and the no-JS shell 2026-07-31 07:23:53 +02:00
settings #225: read-trail master switch and written purpose limitation 2026-07-31 12:24:57 +02:00
setup #190: configurable session lifetime with a server-side idle timeout 2026-07-30 11:11:15 +02:00
testing #189: make the CSRF origin check fail closed 2026-07-30 09:34:44 +02:00
trash #195: trashed content leaves the search index itself 2026-07-30 14:07:34 +02:00
users #150: @-Mentions — Inline-Node, instanzweite User-Suche, Autocomplete 2026-07-20 00:56:07 +02:00
versions Editor shortcuts: "e" edits, the platform chord+S snapshots versions 2026-07-15 13:17:09 +02:00
watches Add watches: follow pages and ponds with auto-watch preferences (#93) 2026-07-11 22:59:11 +02:00
app.module.ts #222: read-access trail for classified pages 2026-07-31 12:12:55 +02:00
main.ts Remove an unused eslint-disable directive in main.ts 2026-07-12 20:45:29 +02:00