Skip to content

Latest commit

 

History

History
76 lines (65 loc) · 5.38 KB

File metadata and controls

76 lines (65 loc) · 5.38 KB

Responsible-Tech Audits — Queer the Stacks

Instantiates /STANDARDS/RESPONSIBLE-TECH-FRAMEWORK.md. Reading is sensitive — a queer/trans reading history can out someone — so privacy and source-ethics carry the weight here, alongside never corrupting the real libraries. Checklists run in CI from M0; artifacts are committed and regenerated by make verify.


A. Ethics & responsibility

  • Worst misuse: the tool leaks or exposes a reading history that reveals someone's identity, or it quietly damages the user's real Calibre/KOReader libraries.
  • Mitigations: self-hosted + private; no reading-derived egress; public catalog metadata is fail-closed and explicitly opt-in; strictly read-only, snapshot-first access to source databases.
  • "Works as intended" harm: recommendations that mirror gatekept bestseller catalogs, narrowing rather than widening discovery. → Ethical sources + deliberate diverse/small-press surfacing.
  • Non-goals: not a public reading profile; not a library editor. Auto-gated: read-only + no-egress tests. Review-gated: ethics review.

B. Bias & fairness

  • Segments: books by source/catalog, by press size, by theme.
  • Risks: representational bias (small-press/own-voices work under-surfaced), and reductive pigeonholing of authors by identity.
  • Tests: diverse-source presence; sourced-tags-only (no auto-assigned author identity labels).
  • Commitment: widen the aperture beyond bestseller bias; describe books, don't label authors. Auto-gated: source-mix + sourced-tags tests. Review-gated: representation review.

C. Privacy & data-protection

  • Data inventory: your library metadata + reading stats + progress (sensitive); derived app state.
  • Handling: reading history, progress, tags, and taste weights stay on your seedbox behind auth; no third-party analytics. Optional public-catalog requests contain only predeclared broad subjects or explicit public-list URLs—never reading-derived values.
  • Commitment: self-hosted, private, minimal retention; reading history is never shared or exposed. Auto-gated: no-egress/no-telemetry + auth tests. Review-gated: privacy review.

D. Transparency & explainability

  • Per recommendation: the reasons and the source catalog/list; data-source limitations noted.
  • Commitment: no unexplained recommendations; honest about source coverage. Auto-gated: explanation-present + source-shown tests. Review-gated: framing review.

E. Accessibility (WCAG 2.2 AA)

  • Dashboard: keyboard-complete; charts/Wrapped have data-table equivalents; theme tags never color-only; readable typography.
  • Commitment: zero axe violations plus a committed manual walkthrough. Auto-gated: structural, axe/contrast, chart-table, dark-preference, and 320px-reflow tests. Review-gated: human keyboard, magnification, and screen-reader walkthrough sign-off.

F. Security

  • Threat model: unauthorized access to the self-hosted app, source-DB corruption, API-key leakage, dependency risk.
  • Controls: required auth, read-only/snapshot source access, secrets handling, outbound host allowlist, SAST + deps + secret scans merge-blocking.
  • Residual-risk register committed in docs/audits/. Auto-gated: scanners + access + read-only tests. Review-gated: threat-model sign-off.
  • ASVS 5.0 level: L2 (reading history = sensitive personal data). Rationale: single-user auth-gated app handling data that can out a reader — above L1 baseline, below L3 (no high-value/regulated transaction surface). Declared 2026-07-05.
  • Container scan: ✓ blocking Trivy scan (.github/workflows/container-scan.yml), HIGH/CRITICAL, fixable-only.
  • SBOM / signing: not yet produced — no release pipeline exists yet (see docs/ROADMAP.md and the tracked gap noted in CHANGELOG.md/README §Standards). Will be generated (CycloneDX) and signed (cosign keyless + SLSA provenance) by the release workflow once built.
  • VEX policy: none needed; empty ignore-list policy in docs/audits/residual-risk.md (no accepted advisories exist to VEX against).

Applicability — AI-EVALUATION and INTERNATIONALIZATION

  • AI-EVALUATION: N/A. No LLM/GenAI SDK is used anywhere in this repo (verified: no anthropic/openai/transformers imports). The recommender is a classic content/co-occurrence model plus optional local hash embeddings — not a generative or LLM-backed system, so AI-EVALUATION-STANDARD doesn't apply. It has its own merge-blocking offline eval regardless (make eval fails unless the recommender beats a popularity baseline; see docs/audits/eval-report.json), which is AI-EVAL-shaped rigor applied where it's actually needed.
  • INTERNATIONALIZATION: Applies — deferred to backlog #17. The current surface is single-user and English-only, but the portfolio manifest keeps the standard applicable until the fork/audience boundary is reconciled. See docs/I18N.md and ADR 0007.

Committed artifacts

  • docs/audits/reading-privacy.md (self-hosted, no egress, sensitivity rationale)
  • docs/audits/source-ethics.md (ethical catalogs, Goodreads exclusion, diverse surfacing)
  • docs/audits/library-safety.md (read-only + snapshot access to Calibre/KOReader)
  • docs/audits/accessibility-YYYY-MM-DD.md
  • docs/audits/real-library-dogfood-YYYY-MM-DD.md
  • docs/research/real-user-study-plan.md
  • docs/audits/residual-risk.md