r and RuFlo
53f95e36e6
feat(funnel): honor opt-outs in the messages fetch, wire opt-in telemetry, fix clone tracker
...
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 >
2026-11-06 11:05:25 -05:00
..
2026-10-28 03:50:50 -04:00
2026-10-11 16:54:16 -04:00
2026-09-27 10:30:47 -04:00
2026-10-08 16:52:49 -04:00
2026-05-29 08:52:31 -04:00
2026-05-12 00:40:47 -04:00
2026-09-28 09:40:35 -04:00
2026-10-30 15:15:22 -04:00
2026-06-16 12:10:35 -04:00
2026-10-11 09:31:30 -04:00
2026-05-12 00:51:18 -04:00
2026-05-13 09:02:51 -04:00
2026-09-28 17:13:43 -04:00
2026-10-19 22:55:54 -04:00
2026-05-14 08:03:31 -04:00
2026-05-15 21:44:39 -04:00
2026-07-29 21:36:20 -04:00
2026-11-05 09:25:38 +05:30
2026-07-16 23:20:35 -04:00
2026-05-12 00:44:57 -04:00
2026-10-29 19:21:05 -04:00
2026-10-23 23:51:58 -04:00
2026-10-28 03:50:50 -04:00
2026-10-29 19:50:34 -04:00
2026-10-13 13:38:45 +05:00
2026-05-23 04:52:41 -04:00
2026-05-11 00:29:58 -04:00
2026-10-10 11:20:45 -04:00
2026-05-13 09:02:02 -04:00
2026-09-29 09:22:24 -04:00
2026-06-16 12:10:35 -04:00
2026-06-29 11:59:20 -04:00
2026-10-24 22:42:09 -04:00
2026-10-24 22:42:09 -04:00
2026-10-24 22:42:09 -04:00
2026-10-04 19:47:20 -04:00
2026-10-01 17:51:14 -04:00
2026-06-27 11:42:23 -04:00
2026-05-26 00:14:53 -04:00
2026-06-27 11:41:06 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-26 16:58:54 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-10-19 12:56:46 -04:00
2026-05-11 00:29:58 -04:00
2026-06-16 12:10:35 -04:00
2026-10-04 22:03:45 -04:00
2026-10-04 22:03:45 -04:00
2026-06-16 22:42:19 -04:00
2026-10-10 11:23:58 -04:00
2026-10-26 09:56:35 -04:00
2026-07-29 15:08:51 -04:00
2026-06-16 13:14:49 -04:00
2026-10-10 11:36:33 -04:00
2026-10-09 10:18:04 -04:00
2026-10-05 05:37:46 -04:00
2026-11-04 21:28:06 -06:00
2026-11-04 15:49:08 -06:00
2026-10-20 02:11:26 -04:00
2026-01-04 19:30:59 +00:00
2026-10-24 22:42:09 -04:00
2026-10-24 22:42:09 -04:00
2026-10-24 22:42:09 -04:00
2026-10-30 12:12:42 -04:00
2026-10-30 12:12:42 -04:00
2026-10-19 22:55:58 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-10-04 19:02:02 -04:00
2026-04-06 11:47:30 -04:00
2026-05-05 22:18:18 -04:00
2026-10-04 22:48:04 -04:00
2026-10-05 03:07:59 -04:00
2026-10-10 17:48:37 -04:00
2026-10-05 04:36:37 -04:00
2026-10-05 01:56:36 -04:00
2026-10-05 02:53:23 -04:00
2026-10-05 00:25:30 -04:00
2026-07-26 18:47:59 -04:00
2026-10-24 22:42:09 -04:00
2026-10-29 19:50:34 -04:00
2026-08-10 15:08:06 -02:30
2026-10-04 21:19:34 -04:00
2026-09-16 16:36:46 +00:00
2026-10-20 05:42:06 -04:00
2026-10-20 05:42:06 -04:00
2026-10-05 00:27:13 -04:00
2026-10-04 20:34:20 -04:00
2026-06-09 12:15:03 -04:00
2026-06-16 12:10:35 -04:00
2026-07-20 15:58:21 -04:00
2026-05-09 10:47:43 -04:00
2026-10-12 11:41:11 -04:00
2026-05-03 21:47:15 -04:00
2026-07-09 10:40:08 -04:00
2026-08-12 18:28:25 -04:00
2026-07-16 19:10:33 -04:00
2026-06-29 11:59:20 -04:00
2026-10-19 22:55:58 -04:00
2026-05-21 14:19:35 -04:00
2026-05-18 20:55:31 -04:00
2026-05-15 21:44:39 -04:00
2026-10-19 21:50:20 -04:00
2026-05-21 14:37:43 -04:00
2026-11-01 00:33:07 -04:00
2026-05-21 14:03:29 -04:00
2026-09-24 06:26:44 +00:00
2026-05-24 23:46:50 -04:00
2026-05-24 23:46:50 -04:00
2026-05-24 23:46:50 -04:00
2026-06-25 18:32:28 -04:00
2026-10-30 16:59:46 -04:00
2026-05-21 15:41:47 -04:00
2026-08-11 18:39:17 -04:00
2026-05-19 12:19:16 -04:00
2026-05-26 00:01:46 -04:00
2026-05-25 22:44:55 -04:00
2026-05-24 11:13:50 -04:00
2026-05-19 22:39:21 -04:00
2026-05-19 23:04:14 -04:00
2026-05-19 22:44:34 -04:00
2026-07-16 23:14:09 -04:00
2026-10-10 16:51:15 +02:00
2026-11-05 10:54:46 -05:00
2026-06-02 03:59:36 -04:00
2026-07-29 15:40:17 -04:00
2026-05-21 12:36:22 -04:00
2026-10-12 11:21:58 -04:00
2026-10-10 10:54:15 -04:00
2026-05-27 09:00:35 -04:00
2026-09-27 15:52:07 -04:00
2026-05-24 14:32:43 -04:00
2026-05-24 14:32:43 -04:00
2026-05-24 14:32:43 -04:00
2026-05-24 14:32:43 -04:00
2026-06-17 14:10:27 -04:00
2026-06-17 14:10:27 -04:00
2026-05-16 19:20:26 -04:00
2026-09-27 10:30:47 -04:00
2026-06-25 18:18:19 -04:00
2026-09-21 16:49:17 -04:00
2026-10-05 05:37:46 -04:00
2026-10-04 23:46:06 -04:00
2026-10-07 12:40:10 -04:00
2026-11-06 11:05:25 -05:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-06-16 12:10:35 -04:00
2026-10-20 05:42:06 -04:00
2026-02-28 03:30:04 +00:00
2026-05-13 11:11:25 -04:00