freedom-intelligence/docs/daily-brief-playbook.md
tegwick a78187c33e Make the sensing loop durable and pin the reserve to Scaleway
The weekday brief only counts when the file is on origin/main. Hub
events without git objects are failures. The open-weight SoT moves
from the VAULT 850 GiB quota to a dedicated Scaleway bucket (One Zone
IA for R, Glacier for S) so V4-Flash and K3 are economically in-scope.

Catalogs the real DeepSeek-V4-Flash-0731 (MIT ~167 GiB MoE, not 12B)
and nominates Qwen3.8-27B. Bucket create remains FI-WP-0004-T08.

Assistant: grok
Assistant-Session: 01a09c6a-1cfc-75b1-a78d-c13eaf22241d
2026-09-13 22:45:43 +02:00

143 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 AD 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` **after** the brief exists on `origin/main` |
| Hub without git | A `fi_daily_brief` event with no matching file is a **false completion**. Run `scripts/verify_brief_durability.py`. |
---
## Manual procedure
1. **Orient**
- Read last 12 briefs if any; skim baseline § executive snapshot if first week
- `git pull` on freedom-intelligence
2. **Scan** (`docs/sources-allowlist.md`) — 3060 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
- Do **not** re-nominate a model already in `inventory/catalog/`
- Do **not** invent parameter counts; cite the model card or mark unverified
- 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 and push** — brief + any catalog YAML must land on `origin/main`.
A local-only commit does **not** complete the day.
7. **Completion evidence** (required for activity-core rhythm)
Post State Hub progress **only after** origin has the commit:
```yaml
event_type: fi_daily_brief
author: <agent-or-operator>
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
pushed: true
origin_sha: "<full sha>"
```
If the brief is written but push fails, post `event_type: executor_run`
with `ok: false` so `due` stays true.
Workstation API often `http://127.0.0.1:8000`; remote tunnel ports per
Custodian docs. See `docs/state-hub-delivery.md`.
---
## Automation consumer (activity-core design)
**Organizer:** activity-core (when / what / where) — not workstation cron.
**Executor:** rein-aharness on railiance01 (`fi-research-brief`).
**Org playbook:** `activity-core/docs/recurring-automations-playbook.md`.
When activity-core emits `activity_task_spawn` with
`target_repo: freedom-intelligence` and labels including `research-brief`:
1. Railiance host timer (or manual) runs
`rein-aharness fi-research-brief --target-repo ~/freedom-intelligence`
2. llm-connect drafts the brief; harness **commits, pushes to origin**, then
posts **`fi_daily_brief`** with `pushed=true`
3. Idempotency: one brief file per date on origin; resolver clears `due` only
then. Local commit without push must not clear `due`.
Do **not** install Claude Code / Codex on railiance01 for this rhythm.
| Piece | Location |
| ----- | -------- |
| Definition | `activity-definitions/fi-daily-research-brief.md` |
| Ops | `docs/recurrence-ops.md` |
| Executor install | `scripts/railiance-rhythm/install-on-railiance.sh` |
| Workplan | FI-WP-0002 (finished) |
| Resolver | `fi_brief_status` in activity-core |
### Ops: load this repos definitions
```bash
# Dev
export ACTIVITY_DEFINITION_DIRS=.../freedom-intelligence
make -C ~/activity-core sync-activity-definitions
# Production: ConfigMap actcore-external-activity-definitions
# then POST /admin/sync?definitions=true&schedules=true
```
---
## Quality bar
| Check | Pass |
| ----- | ---- |
| Signal | No filler paragraphs |
| Sources | At least one primary URL per non-empty axis row |
| Honesty | Benchmarks marked directional; prices “verify before budget”; sizes from the card |
| Collection | License + real size/class; never re-announce a cataloged id as a new release |
| Axes | C and D must be scanned; `*(none)*` is allowed only after a look |
| 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 documents research window. If nothing
moved, a short no-delta brief still completes the rhythm and posts
`fi_daily_brief`.