# Daily research brief — playbook **Audience:** operator or agent executing `target_repo: freedom-intelligence` **Template:** `briefs/_template.md` **Baseline memory:** `research/2026-07-24-baseline-field-survey.md` **Sources:** `docs/sources-allowlist.md` --- ## Purpose Produce **one** curated brief per active day covering axes A–D when there is signal. Briefs are **deltas** from the baseline survey and prior briefs — not full resurveys. --- ## Idempotence | Rule | Detail | | ---- | ------ | | One brief per date | Path `briefs/YYYY/MM/YYYY-MM-DD.md` | | Calendar | Prefer **Europe/Berlin** date in front matter | | Skip empty days | Either omit file or write `*No material delta.*` in Headline deltas | | Automation due bit | Cleared only by State Hub event `fi_daily_brief` (below) | --- ## Manual procedure 1. **Orient** - Read last 1–2 briefs if any; skim baseline § executive snapshot if first week - `git pull` on freedom-intelligence 2. **Scan** (`docs/sources-allowlist.md`) — 30–60 minutes cap - Capture only items that change capability, cost, access, or operability 3. **Draft** ```bash mkdir -p briefs/$(date +%Y/%m) cp briefs/_template.md briefs/$(date +%Y/%m)/$(date +%Y-%m-%d).md ``` - Fill front matter (`status: final` when done) - Leave empty sections as `*(none)*` - Cite primary URLs 4. **Collection candidates** - Use inventory field names; set priority - If nominating: add or update `inventory/catalog/{id}.yaml` with `status: candidate` and `collection.brief_refs` 5. **Lab implications** - Link open workplans (`FI-WP-*`) only when action is real 6. **Commit** (operator policy) — brief + any catalog YAML 7. **Completion evidence** (required for activity-core rhythm) Post State Hub progress (HTTP or MCP), shape: ```yaml event_type: fi_daily_brief author: summary: "FI daily brief YYYY-MM-DD" detail: repo: freedom-intelligence date: "YYYY-MM-DD" path: "briefs/YYYY/MM/YYYY-MM-DD.md" collection_candidates: 0 ``` Workstation API often `http://127.0.0.1:8000`; remote tunnel ports per Custodian docs. See `docs/state-hub-delivery.md`. --- ## Automation consumer When activity-core emits `activity_task_spawn` with `target_repo: freedom-intelligence` and labels including `research-brief`: 1. Checkout this repo on the execution host 2. Run this playbook end-to-end 3. Prefer **llm-connect / OpenRouter** for any LLM drafting (Binky lesson: do not install coding-agent CLIs on railiance01 solely for this) 4. Always post `fi_daily_brief` even if the brief is “no material delta” 5. Idempotency key: do not open a second brief file for the same `date` Activity definition: `activity-definitions/fi-daily-research-brief.md` Workplan: `workplans/FI-WP-0002-activity-core-daily-research.md` Resolver: activity-core state-hub query `fi_brief_status` (implemented 2026-07-24) ### Ops: load this repo’s definitions Dev / workstation worker: ```bash export ACTIVITY_DEFINITION_DIRS=/home/worsch/freedom-intelligence # then: make sync-activity-definitions (with ACTCORE_DB_URL + stack) ``` Production (railiance): either project `activity-definitions/fi-daily-research-brief.md` into ConfigMap `actcore-external-activity-definitions`, or mount a checkout under `ACTIVITY_DEFINITION_DIRS` (`/etc/activity-core/external-definitions`). Keep `enabled: false` until FI-WP-0002-T05 dry-run passes. --- ## Quality bar | Check | Pass | | ----- | ---- | | Signal | No filler paragraphs | | Sources | At least one primary link per non-empty axis row | | Honesty | Benchmarks marked directional; prices “verify before budget” | | Collection | License noted for any candidate | | Length | Prefer one screen to three; deep dives go under `research/` | --- ## First daily after baseline The baseline survey (2026-07-24) already covers the field. The **first daily** should only list changes **after** that document’s research window. If nothing moved, a short no-delta brief still completes the rhythm and posts `fi_daily_brief`.