TunnelVision

0008 — TR-03161 audit workflow: scope, publication and attribution

Context

Since 2026-09-30 the direction of the project is to make TunnelVision produce network evidence for security assessments against BSI TR-03161 (medical apps / DiGA) — work that is done by hand today with an intercepting proxy. The plan, the gaps against what exists and the construction order are kept in the private development repository (07-tr03161-audit-workflow.md), like every other list of unfinished work.

That plan left three questions open on purpose, because none of them is a technical question and all three shape what gets built:

  1. How much of the plan is in scope. It lists eleven increments, the last two of which (QUIC SNI and a feasibility study of app attribution and a macOS target) are of a different kind from the rest.
  2. What reaches the public repository. Since 2026-08-29 TunnelVision carries the full source under MIT, so “nothing development-related goes public” no longer answers it.
  3. How traffic is attributed to the audited app. A packet tunnel sees packets, not processes, and a report that does not say how it knows whose traffic it is describing is not evidence.

Decision

(1) Scope: the core workflow, increments 1–9 of the plan, with QUIC SNI (10) after them. That is: the audit data model and schema v6; the session lifecycle screen and the marker control; names from DNS; TLS metadata; the findings classifier; the release diff; the requirement catalogue and its mapping; the evidence bundle; and the PDF report. QUIC SNI stays in scope and stays last, as the plan orders it. Increment 11 — the written feasibility study of per-app attribution (MDM per-app VPN, NEFilterDataProvider) and of a macOS target — is out of scope. Nothing is built or studied for either until a later ADR says otherwise.

(2) Publication: all of the workflow’s code, one finished increment at a time. An increment that is complete and green may be promoted to the public repository under MIT like the rest of the source, by copying the source tree and not the history, and only after telling Juan before each copy. The exclusions that already apply keep applying: PROGRESS.md, the roadmap, 00-START-HERE.md, and the plan itself (07-tr03161-audit-workflow.md) never go public, because they describe unfinished work.

(3) Attribution: a controlled session against a baseline. The method is procedural, not technical: a device with nothing else signed in and background refresh off, a baseline session recorded for the project without the audited app running, and the audit session itself. What the audit session shows beyond the baseline is attributed to the app, and the report states the method instead of implying a per-app capability the tunnel does not have. The project’s bundle identifier is informational: it names what was audited, it is never used to filter traffic.

Consequences

Alternatives considered