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 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 7780@bnt-lap001
Assistant-Session: 622cd705-cb31-4322-ba08-dd42e44fa583
This commit is contained in:
tegwick 2026-10-06 00:28:11 +02:00
parent af86299186
commit 1d4c55ef25
13 changed files with 1398 additions and 5 deletions

View file

@ -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 `<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
```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.