intelligence-radar/workplans/IR-WP-0010-inbound-library-briefs.md
tegwick b1a65e7214 Offer catalog sources to inbound-library as shared pointers (IR-WP-0010-T04).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 7780@bnt-lap001
Assistant-Session: 622cd705-cb31-4322-ba08-dd42e44fa583
2026-10-06 00:31:54 +02:00

7.7 KiB

id type title domain repo status flavor owner topic_slug created updated state_hub_workstream_id
IR-WP-0010 workplan Receive automation briefs through inbound-library infotech intelligence-radar active implementation claude custodian 2026-10-05 2026-10-05 ed794654-7c29-5455-9929-a41fe713c37a

The Grok and ChatGPT daily and weekly briefs are the first use of inbound-library (ILIB-WP-0002). Both providers deliver by email. That delivery is within their terms of service, unlike pulling from the signed-in websites. The library keeps the mail and notifies this repo. This repo then retains each brief through the existing T02 path of IR-WP-0008. The drop folder stays as a manual fallback.

This replaces the website pull of IR-WP-0009-T01.

Point the automations at the library mailbox

id: IR-WP-0010-T01
status: done
priority: high
state_hub_task_id: "785c4345-4dbc-5617-a0d0-2a5b394d1ca7"

Set each Grok automation's email delivery, and each ChatGPT scheduled task's email notification, to the library mailbox. Then check whether each provider's mail contains the full brief or only a link or teaser. A provider whose mail does not carry the brief stays on the drop-folder fallback. That gap is recorded here; it is not worked around.

Acceptance: one daily and one weekly mail retained per provider, each with the content assessment recorded.

Done 2026-10-05 (automation delivery configured), content assessment:

  • Grok: delivers by email to the founder's Gmail, which forwards it to library@coulomb.social. Corrected 2026-10-05 after reading the retained mails: the mail is a notification, not the brief. It holds the automation name (intelligence-radar-daily or -weekly), the title and a teaser of about 1.5 KB that is cut off mid-sentence, followed by "Continue reading" and a grok.com/chat/<id> link that needs a signed-in session. The full brief (about 11 KB for a weekly) is not in the mail. The two 4 October mails were retained and routed as notifications.
  • ChatGPT: its automations offer no email delivery or forwarding (the founder checked). ChatGPT briefs stay on the drop-folder fallback (import-briefs, IR-WP-0008). The gap is recorded here and not worked around: no scraping of signed-in sessions. Revisit if OpenAI adds email delivery.

Register topics, sources and the subscription

id: IR-WP-0010-T02
status: done
priority: high
state_hub_task_id: "82b2217c-df13-5e60-9fb8-4e2bb818655b"

In inbound-library, register:

  • the topics intelligence.daily-brief and intelligence.weekly-brief;
  • the Grok and ChatGPT sender sources, with their daily and weekly cadence;
  • registry/subscriptions/intelligence-radar.json, using the intelligence-radar agent name and all three channels.

Acceptance: inbound-library check accepts the registry.

2026-10-05: the topics and registry/subscriptions/intelligence-radar.json (hub, pull and daily digest) are registered and pass check. The sender sources are still open. Once the first briefs arrive in quarantine, register their actual From addresses. run-due then re-routes the quarantined mails.

Done 2026-10-05: source grok-briefs-via-founder is registered. It matches mail from bernd.worsch@gmail.com whose original sender is noreply@x.ai (the new inbound-library forwarded_from rule), under both intelligence topics, cadence daily. Other founder forwards stay quarantined. Re-queue routed the two quarantined briefs, and the hub notified the intelligence-radar agent (2 items).

Retain notified briefs

id: IR-WP-0010-T03
status: done
priority: high
state_hub_task_id: "248ebb6a-4fe1-5d90-b430-706b92f5029a"

Add a pull-briefs step to run-due. It reads new items for this repo's subscription through the library's pull CLI and retains them with import-briefs-style provenance: the library item id and the original message. After that, the existing digest-draft path lists them.

The step must keep these properties:

  • original bytes are kept;
  • reviewed digests are never overwritten;
  • the brief stays unverified until it is reviewed;
  • if the library is unreachable, that part of the run fails and retries, and source capture still runs.

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 <period>-grok-mail-<id>.md. The stable <period>-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

id: IR-WP-0010-T04
status: done
priority: medium
state_hub_task_id: "54945f3f-d651-5de2-8e03-c554ab34dc2c"

Offer the primary sources from catalog/sources.json to inbound-library as shared sources under matching topics, so other repos can find them. Primary capture stays here. The library only points to these sources and does not re-ingest them.

Acceptance: a second repo's subscription matches at least one contributed source.

Done 2026-10-06:

  • contribute-sources writes the five catalog sources into inbound-library as shared URL pointers. They are ir-swe-bench, ir-anthropic-pricing, ir-anthropic-sonnet, ir-anthropic-sonnet-launch and ir-openrouter-models. Their topics are ai.benchmarks, ai.pricing and ai.models, mapped in ops/schedule.json under library.contribute.
  • URL and publisher come from catalog/sources.json. Reruns are idempotent, and a file owned by another repo is refused. Primary capture stays here; the library lists the sources and does not fetch them.
  • The library gained the sources --repo discovery command.
  • Acceptance was verified against a temporary copy of the registry: a hypothetical llm-connect subscription to ai.pricing matched ir-anthropic-pricing and ir-openrouter-models. No real second consumer is subscribed yet, and none was registered on another repo's behalf.

Run a week end to end, then retire the website-pull record

id: IR-WP-0010-T05
status: todo
priority: medium
state_hub_task_id: "76ea8e93-62c9-58aa-a85d-f0bc795910e2"

Run a week of unattended timer wakes. Every expected daily and weekly brief should arrive, and any missing one should show in library health as source 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.