mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-11-10 06:23:28 +09:00
Operational telemetry (ADR-309, legitimate interest): - `hooks refresh-funnel` (SessionStart) checked only the RUFLO_FUNNEL env kill switch. `ruflo funnel disable`, project config, enterprise policy and a declined disclosure all still called funnel.ruv.io every session. It now resolves the full funnel precedence and makes no request when disabled. - The fetch's User-Agent adds the CLI release and OS/CPU family only: `ruflo-funnel/messages ruflo/<v> (<platform>; <arch>)`, sanitized to token characters. The live endpoint accepts it. - docs/privacy/funnel-legitimate-interest-assessment.md is the assessment ADR-309 requires. ADR-309 links it, and ADR-310's acceptance rule now names the one documented default request. Opt-in telemetry (ADR-302/305): - `ruflo funnel telemetry on|off|status` is the only way to grant the telemetry consent domain. Nothing granted it before, so the event queue never left the machine. - With consent, refresh-funnel flushes queued events once per session. - `funnel disable` and `telemetry off` revoke consent and delete the ID and the local queue. Clone tracker: - A failed traffic fetch was recorded as 0 clones (snapshots #15-#18 read 0 while GitHub reported ~258k in 14 days). The script now exits 1 and writes nothing. - The workflow reads TRAFFIC_TOKEN, falling back to GITHUB_TOKEN, because the traffic API needs push access. Co-Authored-By: RuFlo <ruv@ruv.net>