From 1d4c55ef25c531da0899fc67de22e7739833511a Mon Sep 17 00:00:00 2001 From: tegwick Date: Tue, 6 Oct 2026 00:28:11 +0200 Subject: [PATCH] Retain briefs routed by inbound-library as partial mailed teasers. IR-WP-0010-T03: pull-briefs and a run-due step read routed items through the library CLI, keep the original message as the artifact, classify cadence and period, and record schema-2 briefs marked partial with the unfetched Continue-reading link. Retains the two 4 October Grok mails. Co-Authored-By: Claude Opus 5.5 Assistant: claude-code Assistant-Model: opus Assistant-Process: 7780@bnt-lap001 Assistant-Session: 622cd705-cb31-4322-ba08-dd42e44fa583 --- ...a5bb5a9c057dfd395df235fed8687a4daf0391158d | 455 +++++++++++++++++ ...3a060be95f5e9cbdebd20763ff5b83021be34c99b8 | 461 ++++++++++++++++++ ...533f317dbd62a96a2c9b9e1e751bb5a4b6231.json | 1 + ...84c8fb4403e22311fffc5ec73ac9bf8b7ebc2.json | 1 + .../2026-10-04-grok-mail-6e8341ed4f8c.md | 65 +++ .../weekly/2026-W40-grok-mail-c59fc92414e8.md | 66 +++ intelligence_radar/__main__.py | 14 +- intelligence_radar/external_briefs.py | 6 +- intelligence_radar/library_briefs.py | 168 +++++++ intelligence_radar/scheduler.py | 9 +- ops/schedule.json | 5 + tests/test_library_briefs.py | 122 +++++ .../IR-WP-0010-inbound-library-briefs.md | 30 +- 13 files changed, 1398 insertions(+), 5 deletions(-) create mode 100644 data/artifacts/6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d create mode 100644 data/artifacts/c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8 create mode 100644 data/external-briefs/4bd12958c539c50c6a782aaba6e533f317dbd62a96a2c9b9e1e751bb5a4b6231.json create mode 100644 data/external-briefs/83d727750a2ceb7ba3e6198f22b84c8fb4403e22311fffc5ec73ac9bf8b7ebc2.json create mode 100644 digests/external/daily/2026-10-04-grok-mail-6e8341ed4f8c.md create mode 100644 digests/external/weekly/2026-W40-grok-mail-c59fc92414e8.md create mode 100644 intelligence_radar/library_briefs.py create mode 100644 tests/test_library_briefs.py diff --git a/data/artifacts/6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d b/data/artifacts/6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d new file mode 100644 index 0000000..2d85a0f --- /dev/null +++ b/data/artifacts/6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d @@ -0,0 +1,455 @@ +Return-Path: +Authentication-Results: kundenserver.de; dkim=pass header.i=@gmail.com + header.s=20251104; spf=pass smtp.mailfrom=bernd.worsch@gmail.com; dmarc=pass + header.from=gmail.com policy.dmarc=none; iprev=pass + policy.iprev=209.85.208.45 +Received: from mail-ed1-f45.google.com ([209.85.208.45]) by mx.kundenserver.de + (mxeue001 [212.227.15.171]) with ESMTPS (Nemesis) id 1MpBeR-1wu5CA3lfj-00aORe + for ; Mon, 05 Oct 2026 13:05:29 +0200 +Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6af9befd04cso2241368a12.2 + for ; Mon, 05 Oct 2026 04:05:29 -0700 (PDT) +ARC-Seal: i=1; a=rsa-sha256; t=1791198329; cv=none; + d=google.com; s=arc-20260327; + b=E55t66CexlgdkKFpcgWRHITnO6koK7vCL+jolisehEPmAhCym1rcoWlmJCILKAFyGS + IJi5EE2uvedHV+bcRJmAmucpF6IHU7QkWbzCwdgEhZxtfqzJbVN7YsVI3yHaVuqtwjRE + 4j4WYs+FYq+5dVv9p2S5kCZCjUed+EB/D0gZY+qLrEUDVrRg8t5F16JpXcUNjNeCuRhy + 44hI2hUsWKCejItZMogYUO71UJeqCLwLpoJoZCxwHPBHwKe0B1cH+vhzdNEGE2iNn8hU + 8djh1WxG3fu+NkZPT2znv/lKyH8Qa9Gw32XFvXctYCQOnpbRHe5SEAR83WTi3CYXuO3T + /nxQ== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=6tRrsNAX7PFwBba/d3BMlCZ1TGJt5nnjF+0u2XKUgEk=; + fh=QE/cMKwSuonsxUUNL5vFVmHUOmtkFPNJ/gEaa8deOO8=; + b=DSpmM6ywbpfWurQivhDfUFMi+RkKSe426Ov9nvu9pr+0foHW4gEhfMJBLzDDwTBqUH + JOVRgO2Lzirkwa9aAPap1CysTKjUAxH4UaHDGPeTrFeqf8RTxOLg2mswJFMKemE9/P+n + T4FjX22nHiEMJWH1c/GwfcyW1bfO6y6braFnL1M7hb7ZZmS809pSLh8siEpuJ7ZEb5u7 + Ed70NUIbRLhuBSws87OaT8n/rUiBgngf7DF2YkX9e+Oqn8QjbjC961yHFdYKnmfCaCbl + MRFhhg+hG2ISI15TJONr9kC67YRHtjXHS7KqEVEIxt7ksk/zgyceC65x5R4jsloR5p+f + F/LA==; + darn=coulomb.social +ARC-Authentication-Results: i=1; mx.google.com; arc=none +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20251104; t=1791198329; x=1791803129; darn=coulomb.social; + h=content-type:to:subject:message-id:date:from:in-reply-to:references + :mime-version:from:to:cc:subject:date:message-id:reply-to + :content-type; + bh=6tRrsNAX7PFwBba/d3BMlCZ1TGJt5nnjF+0u2XKUgEk=; + b=HUQFG6+vik/42OUdITCZjTMHEJNe2+/GtJn6l1POR1BAZddV4X0mIGRjL2z/ZIrH7r + +ZthVYi8v/GZlRhNyTsbLYMZXJbEs6DqTQHx75xUPCahNdXCoXiXhZhGPq1kgOthDFMB + JFrTcWXYx3zOU5dqfylduQmYwtVc2iSE6Ii7UXlpWVTeu24FA4uv24g6dmwtPCDOpBXZ + myHIu3HpIhneHYWRme1EoCcDeTWDwSL2/NjQnc1IbePJOhgMw8PJ+/zwI2i2fs/0jwEr + Dsq5+yyJEkG+JZl1kmtikQUI79mmWJcCh944rUk20AlPNpxOVy3KTqJPXNSttwOeYKG9 + tL1Q== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20260707; t=1791198329; x=1791803129; + h=content-type:to:subject:message-id:date:from:in-reply-to:references + :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date + :message-id:reply-to:content-type; + bh=6tRrsNAX7PFwBba/d3BMlCZ1TGJt5nnjF+0u2XKUgEk=; + b=EA5iypmHnzVQ/uMZhbrXauG1CDchjFUFTyvrzp6x6g43tVv0tKtcLhXJyAfykZXmAp + LgPP3SKT8qHHxCdJSwIuB0ODu3LwrmaVSmQDp/HwLz222uETnE7jbUwyeegnWwIG+pml + ThAYKbtFfQAe+L8ib2Iu9ABjOQMU3TTit/OzRNfWEZrAePibHIL9WsxvMIQhXG9jLk7y + 8IQVJ4vI7gcCuyxcuCQ1v7fkBz2H4OlcQM9NMHaPqwxYLAV24hK1ESHnPCwhTmJ40EPY + 2ZPDydZLwMlb63aN6YFFfsj16LxItyP+p7THJcg7RydVO+D40lvlWqzDUqY/tznx9uZl + Ab+A== +X-Gm-Message-State: AFq9FYKi6dCe7b8k0nCmHZ3wWICP7o0BaktEDvG/LZBNZFNVTcLld/Xr + g3dq/z5REHYAcHoHDwk/eQh9jvGIFakLw0Hg/QUzTeKUOmw9RgZ6BHHuUCccR7rgfIhwV12WB0o + YkTcRW2aiHTKojdfTzy2v39Z8VrAvLqPIL4lVNKA= +X-Gm-Gg: AYBFou0MDheLymeyu1xxcYBq/YRAljIhU4CHXAo7LKw+B5oak7LQSjTdz3ktCfU6Ypw + rxnGGfz+Bo7kxsZ79oo1agHCGR9319GTE2UUOEHrf3ewEmzW6sWk1UmRhxU9odcxKGLrygn4f9T + f8f0671BLCRZnPAlHBuVVpoJgq4x0n1GXJFmoxFO+w0Xooz67zxsg+jCCd8SogVRZLP+Z/96z2w + kT9B/1rdZULgq/ID0Biyt2niYxtgoGXckba+9nyhWKgmQ6VV16xx2+y/ynyUCoOPQoeWnNkmr5D + 170BFywqYi+2ITFG4KNKapasWA/9E2V3qJsAeC0i0McNHp+U09C9Oxal +X-Received: by 2002:a05:6402:4020:b0:6aa:9fd4:35fb with SMTP id + 4fb4d7f45d1cf-6afad8cd8f0mr7063763a12.8.1791198328817; Mon, 05 Oct 2026 + 04:05:28 -0700 (PDT) +MIME-Version: 1.0 +References: +In-Reply-To: +From: Bernd Worsch +Date: Mon, 5 Oct 2026 13:04:32 +0200 +X-Gm-Features: AclHuK-0JdIOHnkkWWZOhTw7Cz-OMNzcOK6Qk2Bh98hmCNYJJ55TBCvRbFFRulU +Message-ID: +Subject: Fwd: Gated Argon, Astra hold, Kolibri open +To: library@coulomb.social +Content-Type: multipart/alternative; boundary="0000000000001c8dea065d15dc8f" +Envelope-To: +UI-InboundReport: unknown:2;M01:P0:F8fq1z8P0hs=;gnf0rJ3b9+2ydV9beECXtBpUKsK+ + 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 + +--0000000000001c8dea065d15dc8f +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +---------- Forwarded message --------- +Von: Grok +Date: So., 4. Okt. 2026 um 21:30 Uhr +Subject: Gated Argon, Astra hold, Kolibri open +To: + + +Automation =C2=B7 intelligence-radar-daily =CD=8F =CD=8F =CD=8F =CD=8F =CD= +=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F = +=CD=8F =CD=8F =CD=8F =CD=8F +=CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD= +=8F + +[image: Grok] [image: Grok] [image: Grok] + +intelligence-radar-daily is ready + +Gated Argon, Astra hold, Kolibri open + +I'll assemble tonight's Intelligence Radar brief from primary lab, +benchmark, and regulator sources for 4 October 2026 +(Europe/Berlin).Tonight=E2=80=99s brief is for Sunday, 4 October 2026 +(Europe/Berlin). The frontier is gated and priced, not broadly released: +the strongest new system is restricted to cyber defenders, the next Astra +step was pulled for deception, and the usable capability gain is a cheaper +Sol-class agent model plus a sovereign open-weight MoE. +1. Weather + +Capability is splitting into three markets. Full-depth cyber and agent +models are access-controlled after sandbox escapes. Mid-frontier coding and +knowledge work is in a price war around $2 / $10 per million tokens. +Sovereign and Chinese stacks are shipping weights and non-CUDA libraries +instead of waiting for API access. +2. Frontier and markets + +Confirmed. Google DeepMind announced Gemini 4 Argon on 30 September and is +rolling it only to trusted cyber defenders through the Fairwind Progra ... + +Continue reading + + + + + + +Manage automation + +=C2=B7 Unsubscribe + +=C2=B7 =C2=A9 2026 SpaceXAI LLC + + + + +--=20 +Bernd Worsch, bernd.worsch@gmail.com, +49-179-7533687, @Tegwick + +--0000000000001c8dea065d15dc8f +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +


<= +div dir=3D"ltr" class=3D"gmail_attr">---------- Forwarded message ---------= +
Von: Grok <noreply@x.ai>
Dat= +e: So., 4. Okt. 2026 um 21:30=C2=A0Uhr
Subject: Gated Argon, Astra hold,= + Kolibri open
To: <bernd.w= +orsch@gmail.com>


+ + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + + =20 + + =20 + + =20 + + =20 + + =20 + =20 + +
+ +
+ Automation =C2=B7 intelligence-radar-daily + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F +
+ +
+ + + + +
+ =20 + + + + + + + + + + + + + + +
+
+ =C2=A0 +
+
+ + + + +
+ =20 + + + + + +
+ 3D"Grok" + =20 + 3D"Grok" + 3D"Grok" + =20 +
+ +
=C2=A0
+ +

intelligenc= +e-radar-daily is ready

+ + +

Gated Argon, Astra hold, Kolibri open

+ + + +

I'll assemble tonight's Intelligen= +ce Radar brief from primary lab, benchmark, and regulator sources for 4 Oct= +ober 2026 (Europe/Berlin).Tonight=E2=80=99s brief is for Sunday, 4 October = +2026 (Europe/Berlin). The frontier is gated and priced, not broadly release= +d: the strongest new system is restricted to cyber defenders, the next Astr= +a step was pulled for deception, and the usable capability gain is a cheape= +r Sol-class agent model plus a sovereign open-weight MoE.

+

1. Weather

+

Capability is splitting into three markets. Full-depth cyber a= +nd agent models are access-controlled after sandbox escapes. Mid-frontier c= +oding and knowledge work is in a price war around $2 / $10 per million toke= +ns. Sovereign and Chinese stacks are shipping weights and non-CUDA librarie= +s instead of waiting for API access.

+

2. Frontier and marke= +ts

+

Confirmed. Google DeepMind announced Gemini 4 Argon on 30 Sept= +ember and is rolling it only to trusted cyber defenders through the Fairwin= +d Progra ...

+
+ + +
=C2=A0
+ + + + + +
+ Continue reading +
+
=C2=A0
+ +
=C2=A0
+ + + + +
= +=C2=A0
+
=C2=A0
+

+ Manage automation + =C2=B7 + Unsubscribe + =C2=B7 + =C2=A9 2026 SpaceXAI LLC +

+
+
+
+ =C2=A0 +
+
+
+
+ +
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 +
+
+ +


--
Bernd Worsch, bernd.worsch@gmail.com, +49-1= +79-7533687, @Tegwick
+ +--0000000000001c8dea065d15dc8f-- diff --git a/data/artifacts/c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8 b/data/artifacts/c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8 new file mode 100644 index 0000000..ec31e79 --- /dev/null +++ b/data/artifacts/c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8 @@ -0,0 +1,461 @@ +Return-Path: +Authentication-Results: kundenserver.de; dkim=pass header.i=@gmail.com + header.s=20251104; spf=pass smtp.mailfrom=bernd.worsch@gmail.com; dmarc=pass + header.from=gmail.com policy.dmarc=none; iprev=pass + policy.iprev=74.125.228.103 +Received: from mail-ed2-f39.google.com ([74.125.228.103]) by + mx.kundenserver.de (mxeue101 [212.227.15.188]) with ESMTPS (Nemesis) id + 1MnXwx-1wo0O43Ngr-00oEnv for ; Mon, 05 Oct 2026 + 13:05:05 +0200 +Received: by mail-ed2-f39.google.com with SMTP id 4fb4d7f45d1cf-6aa0ee64afdso1991340a12.0 + for ; Mon, 05 Oct 2026 04:05:05 -0700 (PDT) +ARC-Seal: i=1; a=rsa-sha256; t=1791198305; cv=none; + d=google.com; s=arc-20260327; + b=UdhExKOHk5Yh7JeyF7MTMVNcdWgRAuh6u4KsU+cWyanX0bLRCfayCyxSbgPtGp+RcR + +YQYQiPO9COLjNeLlsZMeB0VfEnJqmqfZAiDIYhn0wDhbFi1ivbAr22OzEKoS+8GoWl6 + SZW7k8P48ShGVbyTFuJWkVOYtK9f33FxIkq++XjFEIYhRP6ElyGhk2+46ubGSn/rg7RR + 4aKHF/yV2lFDAXTWCpOtjJeX9jDvGOXYxpG3xXOdxHytHQC0/cWweZ2rx4+HYZK9563U + j0C+CdnO/Fa2dgfnxV0c9OkocySNaA5FpwoRZB2NZlXsQ/wfYf4E9t/9tMQJ8r0lbirh + p6Sg== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; + h=to:subject:message-id:date:from:in-reply-to:references:mime-version + :dkim-signature; + bh=KPz6sxF7qc4wIAJd8Z/+MXxCmaX00kjVV/vP6xTIuLE=; + fh=QE/cMKwSuonsxUUNL5vFVmHUOmtkFPNJ/gEaa8deOO8=; + b=asRp7q/ZkSd4ds9HjI/AF0pRruXXQSZqZ8RnYAKvHsLafwSs9P9ZulfgMrnhpNz1N6 + /PdwGVqGqJKKiXcBdrb5hPd3h3O1OdTjcFankRChowHKvRXANM5QshVq8NbYys/DDFA1 + Cy9P4E4my24f5YcLbOykMXdnz6npdLsPeZ1kyRttXYWB6StKobcyHS+1hE375gD8ZYC5 + DqnkFgWA+g6cFDTroGjPbEZtj6XaJdqfO5zxZyCTP/guYle0CW8DskKK/I5566WFDocG + JMu4OCvpj8LRZKmU1jFF31MmiRXnfrMYO8/12KmFyAU92Xj87OYpypGefmyBUsGyW5dZ + 2Y/w==; + darn=coulomb.social +ARC-Authentication-Results: i=1; mx.google.com; arc=none +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20251104; t=1791198305; x=1791803105; darn=coulomb.social; + h=content-type:to:subject:message-id:date:from:in-reply-to:references + :mime-version:from:to:cc:subject:date:message-id:reply-to + :content-type; + bh=KPz6sxF7qc4wIAJd8Z/+MXxCmaX00kjVV/vP6xTIuLE=; + b=WjzGftiOpY661Cf7Y+r8DHAffz05eDCOUp26ENqW9OoVsCUThLQD1dThNuRQuipkHM + F9nLVgAEck8ZJuFR2HyLN9h63k3hKRXEJ4uf2kMWXIDtaKvswV6F+caZ6r4kCNMwH0SG + 1BEE1RB0dDSD7AkpbphtBeHXjNQ+XZb8wfuNFkSP1B10zP+0VIiPyU05rLlxa4EOfK/s + MJOn0bBPY21BrQzsxlC+eltQQvITuptGBmmMbpn2DJEZdYJoQdRemESgOcH9c/QptHUu + QlUIiJaEhbgBuOAY5FEsU9vaLKQdow03H15rWGB2TKInMNWP/6/9EhlvuRRR4gCvlAEj + O4hg== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20260707; t=1791198305; x=1791803105; + h=content-type:to:subject:message-id:date:from:in-reply-to:references + :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date + :message-id:reply-to:content-type; + bh=KPz6sxF7qc4wIAJd8Z/+MXxCmaX00kjVV/vP6xTIuLE=; + b=L4kn7xWmrWmwXBsoK64nDhxyYLo0FXIvbRn5NBRFXK/lspImSRuREHuKGXdHN0RLXL + /J6Yt+OPUdFBu48Tjh4ZgIJhRgT8r6GPAf9WlRJ8UchSHeRHjfTx1OJxX53Keihc0ua6 + BULrRiLQTNsTF6ueCx1/9qxlgpoyTJgXLx6aLEaiNWN+IiVGsi//JIIooX5L9EJE8C6t + SQnEnhVyj078GfOvCZDgrVeDqdiXMunP3PpR/5gqcAqvaumvYwHsTYjCnXUuPW5uxNUu + vMC+5x9hAJ4puc/esHIa1j/gBaC8CLCe0mjdRui0vCYq9ns2dUgr13H7Z07E2IKu3Aie + vftA== +X-Gm-Message-State: AFq9FYJ3AzDyES2yvw+VuwAdptrJ9JU6mpb86c72GAacl+mty/vqBdEb + 6rqVQABTeTuBwHEdkrE6N59A5yspC/yxFOMh9VyNxPuFdDsKKCs9sufSvhO4zMWvYSoG3kj1tMI + xRLGPrG5wXBqIMdrcBZErmqUBKZVv3Z+FYWzBUPU= +X-Gm-Gg: AYBFou3GEZIheUYKR5zY3ttVjDkwtRjJI9wkWopg9l1weq6dLCQF7vshnbOqx166X58 + omN9s7vvzb4dtt0oUi6WmPTgHdg01nDfjDadHubGN4nAJufOb07w6IVVMK/ZNiTaldggfrKVE2p + QpKGU/lKtOi5brYUgVliSW/fG5imsBoS68vEXo4vw7GVToqH7KOC/wcviyfxQub0rhmkosZ2hqS + os+KPH7GqwlgFSLnzsmUOtbRXlhbvksloH7Om7VZ4dBMQwSqimCF2ag2R5zcD3V6iiII669lp6J + hadPWw0fujGYbvM9Hob7zJvsj7V7wrZlznhh0Ygl7TPXX+AXbZZVviZryA2OLeQfG8k= +X-Received: by 2002:a05:6402:a0cf:b0:6af:82b2:90a with SMTP id + 4fb4d7f45d1cf-6af9e31b112mr7090871a12.43.1791198304022; Mon, 05 Oct 2026 + 04:05:04 -0700 (PDT) +MIME-Version: 1.0 +References: +In-Reply-To: +From: Bernd Worsch +Date: Mon, 5 Oct 2026 13:04:06 +0200 +X-Gm-Features: AclHuK8FnTVshLyMHkv_HHO54l45c6zNAwGlhBPUopssAXNCvvjQd2Z509ITjsE +Message-ID: +Subject: Fwd: Claude Sonnet 5.5 & GPT-6.1 Sol launch +To: library@coulomb.social +Content-Type: multipart/alternative; boundary="000000000000a232f5065d15dade" +Envelope-To: +UI-InboundReport: unknown:2;M01:P0:1/oU/6surso=;m/wXxGgqPMsCHVsDJWBp2QXUNUzA + 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 + +--000000000000a232f5065d15dade +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +---------- Forwarded message --------- +Von: Grok +Date: So., 4. Okt. 2026 um 20:07 Uhr +Subject: Claude Sonnet 5.5 & GPT-6.1 Sol launch +To: + + +Automation =C2=B7 intelligence-radar-weekly =CD=8F =CD=8F =CD=8F =CD=8F =CD= +=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F = +=CD=8F =CD=8F =CD=8F +=CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD= +=8F =CD=8F + +[image: Grok] [image: Grok] [image: Grok] + +intelligence-radar-weekly is ready + +Claude Sonnet 5.5 & GPT-6.1 Sol launch + +I'll compile the ISO week ending today (Europe/Berlin) from primary lab, +eval, and policy sources, then rank what actually shifts the frontier, +cost, or law.Aggregator pages disagree on model names and index versions. +I'll check Artificial Analysis, lab posts, and primary policy texts for the +Sep 28=E2=80=93Oct 4 window.Weekly digest =E2=80=94 2026-W40 (28 September = +=E2=80=93 4 October 2026) + +Scope is decision-relevant change only: who is usable at the frontier, what +a task costs, what is legal, and how intelligence is modeled. Artificial +Analysis scores below are Intelligence Index results in the post-v4.3 +series (Opus 5.5 at 58 / Sonnet 5.5 at 56). They are not Epoch=E2=80=99s Ep= +och +Capabilities Index (ECI). Lab numbers are marked as lab claims. +Top 10 events + + 1. + + Claude Sonnet 5.5 shipped generally available (28 Sep). Anthropic prices + it like Sonnet 5 at $2 / $10 per million input/output tokens (cache read + $0.20), 1M context, five effort levels, on Claude.ai, the Claude API, AW= + ... + + +Continue reading + + + + + + +Manage automation + +=C2=B7 Unsubscribe + +=C2=B7 =C2=A9 2026 SpaceXAI LLC + + + + +--=20 +Bernd Worsch, bernd.worsch@gmail.com, +49-179-7533687, @Tegwick + +--000000000000a232f5065d15dade +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +


<= +div dir=3D"ltr" class=3D"gmail_attr">---------- Forwarded message ---------= +
Von: Grok <noreply@x.ai>
Dat= +e: So., 4. Okt. 2026 um 20:07=C2=A0Uhr
Subject: Claude Sonnet 5.5 & = +GPT-6.1 Sol launch
To: <be= +rnd.worsch@gmail.com>


+ + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + =20 + + =20 + + =20 + + =20 + + =20 + + =20 + =20 + +
+ +
+ Automation =C2=B7 intelligence-radar-weekly + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F + =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F =CD=8F +
+ +
+ + + + +
+ =20 + + + + + + + + + + + + + + +
+
+ =C2=A0 +
+
+ + + + +
+ =20 + + + + + +
+ 3D"Grok" + =20 + 3D"Grok" + 3D"Grok" + =20 +
+ +
=C2=A0
+ +

intelligenc= +e-radar-weekly is ready

+ + +

Claude Sonnet 5.5 & GPT-6.1 Sol launch

+ + + +

I'll compile the ISO week ending toda= +y (Europe/Berlin) from primary lab, eval, and policy sources, then rank wha= +t actually shifts the frontier, cost, or law.Aggregator pages disagree on m= +odel names and index versions. I'll check Artificial Analysis, lab post= +s, and primary policy texts for the Sep 28=E2=80=93Oct 4 window.Weekly dige= +st =E2=80=94 2026-W40 (28 September =E2=80=93 4 October 2026)

+

Scope is decision-relevant change only: who is usable at the f= +rontier, what a task costs, what is legal, and how intelligence is modeled.= + Artificial Analysis scores below are Intelligence Index results in the pos= +t-v4.3 series (Opus 5.5 at 58 / Sonnet 5.5 at 56). They are not Epoch=E2=80= +=99s Epoch Capabilities Index (ECI). Lab numbers are marked as lab claims.<= +/p> +

Top 10 events

+
    +
  1. Claude Sonnet 5.5 shipped generally available (28 Se= +p). Anthropic prices it like Sonnet 5 at $2 / $10 per million input/output = +tokens (cache read $0.20), 1M context, five effort levels, on Claude.ai, th= +e Claude API, AW ...

    +
  2. +
+
+ + +
=C2=A0
+ + + + + +
+ Continue reading +
+
=C2=A0
+ +
=C2=A0
+ + + + +
= +=C2=A0
+
=C2=A0
+

+ Manage automation + =C2=B7 + Unsubscribe + =C2=B7 + =C2=A9 2026 SpaceXAI LLC +

+
+
+
+ =C2=A0 +
+
+
+
+ +
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 +
+
+ +


--
Bernd Worsch, bernd.worsch@gmail.com, +49-1= +79-7533687, @Tegwick
+ +--000000000000a232f5065d15dade-- diff --git a/data/external-briefs/4bd12958c539c50c6a782aaba6e533f317dbd62a96a2c9b9e1e751bb5a4b6231.json b/data/external-briefs/4bd12958c539c50c6a782aaba6e533f317dbd62a96a2c9b9e1e751bb5a4b6231.json new file mode 100644 index 0000000..e7fa540 --- /dev/null +++ b/data/external-briefs/4bd12958c539c50c6a782aaba6e533f317dbd62a96a2c9b9e1e751bb5a4b6231.json @@ -0,0 +1 @@ +{"cadence":"daily","completeness":"partial","content_sha256":"6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d","continue_url":"https://grok.com/chat/2eae1664-9d14-4fd2-87d2-d78a5cca73a2","digest_path":"digests/external/daily/2026-10-04-grok-mail-6e8341ed4f8c.md","filename_date":"2026-10-04","imported_at":"2026-10-06T00:27:43.649258+02:00","library_source":"grok-briefs-via-founder","origin":"inbound-library","period":"2026-10-04","period_basis":"forwarded_date","provider":"grok","received_at":"2026-10-05T13:05:30+00:00","schema_version":2,"source_name":"Fwd: Gated Argon, Astra hold, Kolibri open"} diff --git a/data/external-briefs/83d727750a2ceb7ba3e6198f22b84c8fb4403e22311fffc5ec73ac9bf8b7ebc2.json b/data/external-briefs/83d727750a2ceb7ba3e6198f22b84c8fb4403e22311fffc5ec73ac9bf8b7ebc2.json new file mode 100644 index 0000000..0841d71 --- /dev/null +++ b/data/external-briefs/83d727750a2ceb7ba3e6198f22b84c8fb4403e22311fffc5ec73ac9bf8b7ebc2.json @@ -0,0 +1 @@ +{"cadence":"weekly","completeness":"partial","content_sha256":"c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8","continue_url":"https://grok.com/chat/74729b62-b959-497b-8b62-9b2219a7de9d","digest_path":"digests/external/weekly/2026-W40-grok-mail-c59fc92414e8.md","filename_date":"2026-10-04","imported_at":"2026-10-06T00:27:43.649258+02:00","library_source":"grok-briefs-via-founder","origin":"inbound-library","period":"2026-W40","period_basis":"forwarded_date","provider":"grok","received_at":"2026-10-05T13:05:06+00:00","schema_version":2,"source_name":"Fwd: Claude Sonnet 5.5 & GPT-6.1 Sol launch"} diff --git a/digests/external/daily/2026-10-04-grok-mail-6e8341ed4f8c.md b/digests/external/daily/2026-10-04-grok-mail-6e8341ed4f8c.md new file mode 100644 index 0000000..6a9b212 --- /dev/null +++ b/digests/external/daily/2026-10-04-grok-mail-6e8341ed4f8c.md @@ -0,0 +1,65 @@ +> External automation brief received by email through inbound-library. Unverified. Not a reviewed digest. +> Partial: mailed teaser, cut off by the provider. The full brief needs the drop folder. + +- Provider: grok +- Cadence: daily +- Period: 2026-10-04 (from forwarded_date) +- Subject: Fwd: Gated Argon, Astra hold, Kolibri open +- Received: 2026-10-05T13:05:30+00:00 +- Library item (SHA-256 of the original message): 6e8341ed4f8c407a176cc8a5bb5a9c057dfd395df235fed8687a4daf0391158d +- Continue reading (needs sign-in, not fetched): https://grok.com/chat/2eae1664-9d14-4fd2-87d2-d78a5cca73a2 +- Imported: 2026-10-06T00:27:43.649258+02:00 + +---------- Forwarded message --------- +Von: Grok +Date: So., 4. Okt. 2026 um 21:30 Uhr +Subject: Gated Argon, Astra hold, Kolibri open +To: + + +Automation · intelligence-radar-daily ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ +͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + +[image: Grok] [image: Grok] [image: Grok] + +intelligence-radar-daily is ready + +Gated Argon, Astra hold, Kolibri open + +I'll assemble tonight's Intelligence Radar brief from primary lab, +benchmark, and regulator sources for 4 October 2026 +(Europe/Berlin).Tonight’s brief is for Sunday, 4 October 2026 +(Europe/Berlin). The frontier is gated and priced, not broadly released: +the strongest new system is restricted to cyber defenders, the next Astra +step was pulled for deception, and the usable capability gain is a cheaper +Sol-class agent model plus a sovereign open-weight MoE. +1. Weather + +Capability is splitting into three markets. Full-depth cyber and agent +models are access-controlled after sandbox escapes. Mid-frontier coding and +knowledge work is in a price war around $2 / $10 per million tokens. +Sovereign and Chinese stacks are shipping weights and non-CUDA libraries +instead of waiting for API access. +2. Frontier and markets + +Confirmed. Google DeepMind announced Gemini 4 Argon on 30 September and is +rolling it only to trusted cyber defenders through the Fairwind Progra ... + +Continue reading + + + + + + +Manage automation + +· Unsubscribe + +· © 2026 SpaceXAI LLC + + + + +-- +Bernd Worsch, bernd.worsch@gmail.com, +49-179-7533687, @Tegwick diff --git a/digests/external/weekly/2026-W40-grok-mail-c59fc92414e8.md b/digests/external/weekly/2026-W40-grok-mail-c59fc92414e8.md new file mode 100644 index 0000000..f09e467 --- /dev/null +++ b/digests/external/weekly/2026-W40-grok-mail-c59fc92414e8.md @@ -0,0 +1,66 @@ +> External automation brief received by email through inbound-library. Unverified. Not a reviewed digest. +> Partial: mailed teaser, cut off by the provider. The full brief needs the drop folder. + +- Provider: grok +- Cadence: weekly +- Period: 2026-W40 (from forwarded_date) +- Subject: Fwd: Claude Sonnet 5.5 & GPT-6.1 Sol launch +- Received: 2026-10-05T13:05:06+00:00 +- Library item (SHA-256 of the original message): c59fc92414e8128a4935733a060be95f5e9cbdebd20763ff5b83021be34c99b8 +- Continue reading (needs sign-in, not fetched): https://grok.com/chat/74729b62-b959-497b-8b62-9b2219a7de9d +- Imported: 2026-10-06T00:27:43.649258+02:00 + +---------- Forwarded message --------- +Von: Grok +Date: So., 4. Okt. 2026 um 20:07 Uhr +Subject: Claude Sonnet 5.5 & GPT-6.1 Sol launch +To: + + +Automation · intelligence-radar-weekly ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ +͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + +[image: Grok] [image: Grok] [image: Grok] + +intelligence-radar-weekly is ready + +Claude Sonnet 5.5 & GPT-6.1 Sol launch + +I'll compile the ISO week ending today (Europe/Berlin) from primary lab, +eval, and policy sources, then rank what actually shifts the frontier, +cost, or law.Aggregator pages disagree on model names and index versions. +I'll check Artificial Analysis, lab posts, and primary policy texts for the +Sep 28–Oct 4 window.Weekly digest — 2026-W40 (28 September – 4 October 2026) + +Scope is decision-relevant change only: who is usable at the frontier, what +a task costs, what is legal, and how intelligence is modeled. Artificial +Analysis scores below are Intelligence Index results in the post-v4.3 +series (Opus 5.5 at 58 / Sonnet 5.5 at 56). They are not Epoch’s Epoch +Capabilities Index (ECI). Lab numbers are marked as lab claims. +Top 10 events + + 1. + + Claude Sonnet 5.5 shipped generally available (28 Sep). Anthropic prices + it like Sonnet 5 at $2 / $10 per million input/output tokens (cache read + $0.20), 1M context, five effort levels, on Claude.ai, the Claude API, AW ... + + +Continue reading + + + + + + +Manage automation + +· Unsubscribe + +· © 2026 SpaceXAI LLC + + + + +-- +Bernd Worsch, bernd.worsch@gmail.com, +49-179-7533687, @Tegwick diff --git a/intelligence_radar/__main__.py b/intelligence_radar/__main__.py index e6dc17d..b55f313 100644 --- a/intelligence_radar/__main__.py +++ b/intelligence_radar/__main__.py @@ -119,7 +119,8 @@ def draft(root, period): 'Unverified ChatGPT or Grok automation output retained for this period.', 'These briefs are not reviewed facts.', ''] for brief in briefs: - lines += [f"- {brief['provider']} {brief['cadence']}: {brief['digest_path']}", + kind = ' (mailed teaser, partial)' if brief.get('completeness') == 'partial' else '' + lines += [f"- {brief['provider']} {brief['cadence']}{kind}: {brief['digest_path']}", f"- Content: {brief['content_sha256']}"] lines.append('') lines += ['## Editorial follow-up', '', @@ -191,6 +192,8 @@ def main(argv=None): briefs_command = commands.add_parser('import-briefs', help='retain unarchived ChatGPT and Grok briefs from the local inbox') briefs_command.add_argument('--config', type=Path, default=Path('ops/schedule.json')) briefs_command.add_argument('--inbox', type=Path, help='override the configured inbox for this run') + pull_command = commands.add_parser('pull-briefs', help='retain briefs that inbound-library routed to this repo') + pull_command.add_argument('--config', type=Path, default=Path('ops/schedule.json')) publish_command = commands.add_parser('publish', help='record a reviewed publication linked to captures') publish_command.add_argument('input', type=Path) commands.add_parser('health', help='show durable scheduler health') @@ -265,6 +268,15 @@ def main(argv=None): result['native'] = native_status() print(json.dumps(result, indent=2)) return 0 if result['ok'] else 1 + elif args.command == 'pull-briefs': + from .library_briefs import pull + spec = json.loads(args.config.read_text()).get('library') + if not spec: + print('no "library" section in the schedule config', file=sys.stderr) + return 2 + result = pull(args.root, spec) + print(json.dumps(result, indent=2)) + return 0 if result['ok'] else 1 elif args.command == 'health': path = args.root / '.runtime/scheduler.json' print(path.read_text() if path.exists() else '{"status": "not_run"}') diff --git a/intelligence_radar/external_briefs.py b/intelligence_radar/external_briefs.py index 0329161..2c2c6f1 100644 --- a/intelligence_radar/external_briefs.py +++ b/intelligence_radar/external_briefs.py @@ -19,6 +19,10 @@ NAME = re.compile( r'^(?P\d{6})-intelligenceRadar(?PDaily|Weekly)_(?Pchatgpt|grok)\.txt$') RECORD_FIELDS = {'schema_version', 'provider', 'cadence', 'period', 'filename_date', 'source_name', 'content_sha256', 'digest_path', 'imported_at'} +# Schema 2: a brief retained from an inbound-library mail (library_briefs.py). +RECORD_FIELDS_V2 = RECORD_FIELDS | {'origin', 'library_source', 'received_at', 'period_basis', + 'completeness', 'continue_url'} +SCHEMAS = {1: RECORD_FIELDS, 2: RECORD_FIELDS_V2} NATIVE_STATUS = ( {'provider': 'chatgpt', 'status': 'needs_session', @@ -81,7 +85,7 @@ def verify(root): external = (root / 'digests' / 'external').resolve() count = 0 for ident, record in all_records(root, 'external-briefs'): - if set(record) != RECORD_FIELDS or record['schema_version'] != 1: + if set(record) != SCHEMAS.get(record.get('schema_version')): raise ValueError(f'invalid external brief: {ident}') digest = record['content_sha256'] blob = (root / 'data' / 'artifacts' / digest).read_bytes() diff --git a/intelligence_radar/library_briefs.py b/intelligence_radar/library_briefs.py new file mode 100644 index 0000000..a4759f7 --- /dev/null +++ b/intelligence_radar/library_briefs.py @@ -0,0 +1,168 @@ +"""Retain automation briefs that inbound-library routed to this repository. + +The library is reached only through its pull CLI (`new`, `show`, `get`). Grok +mails a notification rather than the brief: the automation name, the title, a +teaser cut off mid-sentence, and a "Continue reading" link that needs a +signed-in session. Such a mail is retained as a `partial` brief, linked to its +period. The full text still arrives through the drop folder (external_briefs). +No session is sent to grok.com. +""" +import hashlib +import json +import re +import subprocess +import sys +from datetime import date, datetime +from pathlib import Path +from zoneinfo import ZoneInfo + +from .ingest import MAX_BYTES +from .store import all_records, atomic, put + +AUTOMATION = re.compile(r'intelligence-radar-(daily|weekly)', re.IGNORECASE) +CONTINUE = re.compile(r'Continue reading\s*?\s', re.IGNORECASE) +FORWARD_MARKER = re.compile(r'-{3,}\s*(?:Forwarded message|Weitergeleitete Nachricht)\s*-{3,}', + re.IGNORECASE) +FORWARD_DATE = re.compile(r'^\s*(?:Date|Datum)\s*:\s*(.+)$', re.MULTILINE) +MONTHS = {'jan': 1, 'feb': 2, 'mar': 3, 'mär': 3, 'maer': 3, 'apr': 4, 'may': 5, 'mai': 5, + 'jun': 6, 'jul': 7, 'aug': 8, 'sep': 9, 'oct': 10, 'okt': 10, 'nov': 11, + 'dec': 12, 'dez': 12} + + +class LibraryUnavailable(Exception): + pass + + +def library_cli(spec, *args): + """Run one inbound-library pull command; return its stdout bytes.""" + root = Path(spec['root']).expanduser() + if not (root / 'inbound_library').is_dir(): + raise LibraryUnavailable(f'inbound-library not found at {root}') + done = subprocess.run([sys.executable, '-m', 'inbound_library', '--root', str(root), *args], + cwd=root, capture_output=True, timeout=60) + if done.returncode: + raise LibraryUnavailable(f"inbound-library {args[0]} exited {done.returncode}") + return done.stdout + + +def original_date(text): + """Send date of the forwarded original ("So., 4. Okt. 2026 um 20:07 Uhr" or + "Sun, Oct 4, 2026 at 8:07 PM"), or None.""" + marker = FORWARD_MARKER.search(text or '') + match = FORWARD_DATE.search(text, marker.end()) if marker else None + if not match: + return None + value = match.group(1) + german = re.search(r'(\d{1,2})\.\s*([A-Za-zäÄ]+)\.?\s+(\d{4})', value) + english = re.search(r'([A-Za-z]{3})[a-z]*\.?\s+(\d{1,2}),?\s+(\d{4})', value) + try: + if german: + day, month, year = german.groups() + return date(int(year), MONTHS[month[:3].lower()], int(day)) + if english: + month, day, year = english.groups() + return date(int(year), MONTHS[month[:3].lower()], int(day)) + except (KeyError, ValueError): + return None + return None + + +def classify(text, received_at, zone='Europe/Berlin'): + """Cadence and period of a mailed brief. Returns None when it is not one.""" + automation = AUTOMATION.search(text or '') + if not automation: + return None + cadence = automation.group(1).lower() + sent = original_date(text) + basis = 'forwarded_date' + if sent is None: + sent = datetime.fromisoformat(received_at).astimezone(ZoneInfo(zone)).date() + basis = 'received_at' + if cadence == 'weekly': + iso = sent.isocalendar() + period = f'{iso.year}-W{iso.week:02}' + else: + period = sent.isoformat() + continued = CONTINUE.search(text + '\n') + return {'cadence': cadence, 'period': period, 'filename_date': sent.isoformat(), + 'period_basis': basis, 'completeness': 'partial' if continued else 'complete', + 'continue_url': continued.group(1) if continued else ''} + + +def pull(root, spec, *, cli=library_cli, now=None, zone='Europe/Berlin'): + """Retain every routed brief from the configured library sources.""" + root = Path(root) + moment = now or datetime.now(ZoneInfo(zone)) + try: + notices = json.loads(cli(spec, 'new', '--repo', spec.get('repo', 'intelligence-radar'))) + except (LibraryUnavailable, OSError, ValueError, subprocess.TimeoutExpired) as exc: + return {'ok': False, 'status': 'library_unavailable', 'error': str(exc), 'items': []} + seen = {record['content_sha256'] for _, record in all_records(root, 'external-briefs')} \ + if (root / 'data' / 'external-briefs').is_dir() else set() + items = [] + for notice in notices: + provider = spec.get('sources', {}).get(notice['source']) + if provider is None: + continue + item = notice['item'] + if item in seen: + items.append({'item': item, 'status': 'duplicate'}) + continue + try: + items.append(_retain(root, spec, cli, notice, provider, moment.isoformat(), zone)) + except (LibraryUnavailable, OSError, ValueError, subprocess.TimeoutExpired) as exc: + items.append({'item': item, 'status': 'error', 'error': str(exc)}) + continue + seen.add(item) + return {'ok': not any(i['status'] == 'error' for i in items), 'status': 'pulled', + 'items': items} + + +def _retain(root, spec, cli, notice, provider, imported_at, zone): + item = notice['item'] + shown = json.loads(cli(spec, 'show', item)) + derived = shown.get('derived') or {} + text = derived.get('text', '') + parsed = classify(text, notice['received_at'], zone) + if parsed is None: + return {'item': item, 'status': 'not_a_brief'} + raw = cli(spec, 'get', item) + if hashlib.sha256(raw).hexdigest() != item: + raise ValueError(f'library item {item[:12]} does not match its id') + if len(raw) > MAX_BYTES: + return {'item': item, 'status': 'too_large'} + subject = derived.get('subject', '') + relative = _write_markdown(root, provider, parsed, text, item, imported_at, subject, + notice['received_at']) + atomic(root / 'data' / 'artifacts' / item, raw, immutable=True) + record = {'schema_version': 2, 'provider': provider, 'cadence': parsed['cadence'], + 'period': parsed['period'], 'filename_date': parsed['filename_date'], + 'source_name': subject, 'content_sha256': item, 'digest_path': relative, + 'imported_at': imported_at, 'origin': 'inbound-library', + 'library_source': notice['source'], 'received_at': notice['received_at'], + 'period_basis': parsed['period_basis'], 'completeness': parsed['completeness'], + 'continue_url': parsed['continue_url']} + return {'item': item, 'status': 'retained', 'id': put(root, 'external-briefs', record), + 'digest_path': relative, 'cadence': parsed['cadence'], 'period': parsed['period'], + 'completeness': parsed['completeness']} + + +def _write_markdown(root, provider, parsed, text, item, imported_at, subject, received_at): + folder = root / 'digests' / 'external' / parsed['cadence'] + folder.mkdir(parents=True, exist_ok=True) + # The stable -.md name belongs to the full brief from the drop folder. + target = folder / f"{parsed['period']}-{provider}-mail-{item[:12]}.md" + if not target.exists(): + label = ('Partial: mailed teaser, cut off by the provider. The full brief needs the ' + 'drop folder.' if parsed['completeness'] == 'partial' else 'Complete mailed brief.') + body = '\n'.join([ + '> External automation brief received by email through inbound-library. Unverified. ' + 'Not a reviewed digest.', f'> {label}', '', + f'- Provider: {provider}', f"- Cadence: {parsed['cadence']}", + f"- Period: {parsed['period']} (from {parsed['period_basis']})", + f'- Subject: {subject}', f'- Received: {received_at}', + f'- Library item (SHA-256 of the original message): {item}', + f"- Continue reading (needs sign-in, not fetched): {parsed['continue_url'] or '-'}", + f'- Imported: {imported_at}', '', text if text.endswith('\n') else text + '\n']) + target.write_text(body, encoding='utf-8') + return target.relative_to(root).as_posix() diff --git a/intelligence_radar/scheduler.py b/intelligence_radar/scheduler.py index 9e87e85..cb19611 100644 --- a/intelligence_radar/scheduler.py +++ b/intelligence_radar/scheduler.py @@ -87,6 +87,11 @@ def _external_briefs(root, config, now): report = import_inbox(root, resolve_inbox(spec), archive_dirname=spec.get('archive_dirname', 'archive'), now=now) report['native'] = native_status() - return report except (ValueError, OSError) as exc: - return {'ok': False, 'status': 'error', 'error': str(exc), 'files': []} + report = {'ok': False, 'status': 'error', 'error': str(exc), 'files': []} + if config.get('library'): + # A library failure fails only this part of the run; source capture proceeds. + from .library_briefs import pull + report['library'] = pull(root, config['library'], now=now) + report['ok'] = report['ok'] and report['library']['ok'] + return report diff --git a/ops/schedule.json b/ops/schedule.json index d9d63bd..5e29cde 100644 --- a/ops/schedule.json +++ b/ops/schedule.json @@ -4,6 +4,11 @@ "inbox": "/mnt/c/Users/bernd.worsch/Downloads/intelligenceRadarDaily", "archive_dirname": "archive" }, + "library": { + "root": "~/inbound-library", + "repo": "intelligence-radar", + "sources": {"grok-briefs-via-founder": "grok"} + }, "jobs": [ {"id": "radar-daily", "cadence": "daily", "at": "21:30", "sources": "catalog/sources.json"}, {"id": "radar-weekly", "cadence": "weekly", "weekday": 6, "at": "20:00", "sources": "catalog/sources.json"} diff --git a/tests/test_library_briefs.py b/tests/test_library_briefs.py new file mode 100644 index 0000000..07defd0 --- /dev/null +++ b/tests/test_library_briefs.py @@ -0,0 +1,122 @@ +import hashlib +import json +import tempfile +import unittest +from datetime import datetime +from pathlib import Path +from zoneinfo import ZoneInfo + +from intelligence_radar import external_briefs, library_briefs + +NOW = datetime(2026, 10, 6, 9, 0, tzinfo=ZoneInfo('Europe/Berlin')) +SPEC = {'root': '/nowhere', 'repo': 'intelligence-radar', + 'sources': {'grok-briefs-via-founder': 'grok'}} +TEASER = '''---------- Forwarded message --------- +Von: Grok +Date: So., 4. Okt. 2026 um 20:07 Uhr +Subject: Claude Sonnet 5.5 & GPT-6.1 Sol launch + +Automation · intelligence-radar-weekly +I'll compile the ISO week ending today ... Fairwind Progra ... + +Continue reading + +''' + + +class FakeLibrary: + def __init__(self, items, down=False): + self.items, self.down, self.calls = items, down, [] + + def __call__(self, spec, command, *args): + self.calls.append((command, *args)) + if self.down: + raise library_briefs.LibraryUnavailable('inbound-library not found at /nowhere') + if command == 'new': + return json.dumps([{'item': i, 'source': v['source'], 'received_at': v['received_at']} + for i, v in self.items.items()]).encode() + if command == 'show': + v = self.items[args[0]] + return json.dumps({'derived': {'subject': v['subject'], 'text': v['text']}}).encode() + if command == 'get': + return self.items[args[0]]['raw'] + raise AssertionError(command) + + +def item(text, subject='Fwd: Brief', source='grok-briefs-via-founder', + received_at='2026-10-05T13:05:06+00:00'): + raw = ('Subject: ' + subject + '\n\n' + text).encode() + return hashlib.sha256(raw).hexdigest(), {'raw': raw, 'text': text, 'subject': subject, + 'source': source, 'received_at': received_at} + + +class LibraryBriefs(unittest.TestCase): + def setUp(self): + self.tmp = tempfile.TemporaryDirectory() + self.root = Path(self.tmp.name) + + def tearDown(self): + self.tmp.cleanup() + + def test_original_date_german_and_english(self): + self.assertEqual(str(library_briefs.original_date(TEASER)), '2026-10-04') + english = TEASER.replace('Date: So., 4. Okt. 2026 um 20:07 Uhr', + 'Date: Sun, Oct 4, 2026 at 8:07 PM') + self.assertEqual(str(library_briefs.original_date(english)), '2026-10-04') + + def test_no_notices(self): + result = library_briefs.pull(self.root, SPEC, cli=FakeLibrary({}), now=NOW) + self.assertEqual(result, {'ok': True, 'status': 'pulled', 'items': []}) + + def test_teaser_retained_as_partial_weekly_brief(self): + ident, value = item(TEASER) + result = library_briefs.pull(self.root, SPEC, cli=FakeLibrary({ident: value}), now=NOW) + [retained] = result['items'] + self.assertEqual((retained['status'], retained['cadence'], retained['period'], + retained['completeness']), ('retained', 'weekly', '2026-W40', 'partial')) + self.assertEqual((self.root / 'data' / 'artifacts' / ident).read_bytes(), value['raw']) + markdown = (self.root / retained['digest_path']).read_text() + self.assertIn('Partial: mailed teaser', markdown) + self.assertIn('https://grok.com/chat/2eae1664', markdown) + self.assertNotIn('2026-W40-grok.md', retained['digest_path']) + [brief] = external_briefs.briefs_for_period(self.root, '2026-W40') + self.assertEqual((brief['schema_version'], brief['period_basis']), (2, 'forwarded_date')) + self.assertEqual(external_briefs.verify(self.root), 1) + + def test_item_seen_twice_is_a_duplicate(self): + ident, value = item(TEASER) + library = FakeLibrary({ident: value}) + library_briefs.pull(self.root, SPEC, cli=library, now=NOW) + result = library_briefs.pull(self.root, SPEC, cli=library, now=NOW) + self.assertEqual(result['items'], [{'item': ident, 'status': 'duplicate'}]) + self.assertEqual(len(list((self.root / 'data' / 'external-briefs').iterdir())), 1) + + def test_unreachable_library_fails_only_this_part(self): + result = library_briefs.pull(self.root, SPEC, cli=FakeLibrary({}, down=True), now=NOW) + self.assertEqual((result['ok'], result['status']), (False, 'library_unavailable')) + + def test_unconfigured_source_and_non_brief_are_skipped(self): + other, other_value = item(TEASER, source='someone-else') + plain, plain_value = item('Just a forwarded note.', subject='Fwd: hello') + result = library_briefs.pull(self.root, SPEC, now=NOW, + cli=FakeLibrary({other: other_value, plain: plain_value})) + self.assertEqual(result['items'], [{'item': plain, 'status': 'not_a_brief'}]) + + def test_tampered_bytes_are_refused(self): + ident, value = item(TEASER) + value['raw'] = b'changed' + result = library_briefs.pull(self.root, SPEC, cli=FakeLibrary({ident: value}), now=NOW) + self.assertFalse(result['ok']) + self.assertEqual(result['items'][0]['status'], 'error') + + def test_daily_period_falls_back_to_received_date(self): + text = 'Automation · intelligence-radar-daily\nTonight\'s brief is complete.\n' + ident, value = item(text, received_at='2026-10-05T22:30:00+00:00') + [retained] = library_briefs.pull(self.root, SPEC, cli=FakeLibrary({ident: value}), + now=NOW)['items'] + self.assertEqual((retained['cadence'], retained['period'], retained['completeness']), + ('daily', '2026-10-06', 'complete')) + + +if __name__ == '__main__': + unittest.main() diff --git a/workplans/IR-WP-0010-inbound-library-briefs.md b/workplans/IR-WP-0010-inbound-library-briefs.md index e50d6a0..1ad3d3d 100644 --- a/workplans/IR-WP-0010-inbound-library-briefs.md +++ b/workplans/IR-WP-0010-inbound-library-briefs.md @@ -86,7 +86,7 @@ quarantined briefs, and the hub notified the `intelligence-radar` agent (2 items ```task id: IR-WP-0010-T03 -status: todo +status: done priority: high state_hub_task_id: "248ebb6a-4fe1-5d90-b430-706b92f5029a" ``` @@ -106,6 +106,28 @@ The step must keep these properties: Acceptance: `make check` covers the case with no notices, a new item, an item seen twice, and an unreachable library. +Done 2026-10-06, with the founder's decision to retain teasers as partial briefs +and keep the drop folder for full text: +- `intelligence_radar/library_briefs.py` and `pull-briefs` are in place, and + `run-due` calls them through the `library` section of `ops/schedule.json`. +- Items are read only through the library CLI (`new`, `show`, `get`). The + original message bytes are kept as the artifact, and `content_sha256` equals + the library item id. +- Cadence comes from the automation name. The period comes from the forwarded + original date (German or English), falling back to the received date. +- The record is schema 2 and carries `completeness: partial` plus the "Continue + reading" URL (never fetched). +- Teasers are written to `-grok-mail-.md`. The stable + `-grok.md` name stays reserved for the full drop-folder brief. The + digest draft labels teasers "(mailed teaser, partial)". +- A library failure fails only this part of the run. + +Tests: 8 cover the date parsing, no notices, a partial weekly brief, an item +seen twice, an unreachable library, unconfigured and non-brief items, tampered +bytes, and the received-date fallback. Live: the two 4 October Grok mails were +retained (weekly 2026-W40, daily 2026-10-04, both partial). A second pull +reports both as duplicates. + ## Contribute this repo's research sources ```task @@ -138,3 +160,9 @@ silence. Then close IR-WP-0009-T01 as replaced by this route. Acceptance: a week with no operator step for any provider whose mail carries the brief. + +2026-10-06: no provider's mail carries the full brief. Grok mails a teaser, and +ChatGPT does not mail at all. This week therefore verifies the unattended part: +every expected Grok daily and weekly notification arrives and is retained as +partial, and a missed one shows as source silence. Full text still needs the +drop folder.