Enable fi-daily-research-brief, prove fi_brief_status idempotence with the 2026-07-28 brief, approve R/S catalog entries, collect and verify embeds plus Qwen3-8B and R1-Distill-14B on VAULT, and document residuals (HF-gated Llama, deferred S giants, railiance ConfigMap apply).
146 lines
4.2 KiB
Markdown
146 lines
4.2 KiB
Markdown
---
|
|
id: FI-WP-0002
|
|
type: workplan
|
|
title: "Activity-core daily research brief rhythm"
|
|
domain: agents
|
|
repo: freedom-intelligence
|
|
status: finished
|
|
owner: grok
|
|
topic_slug: freedom-intelligence
|
|
priority: high
|
|
created: "2026-07-24"
|
|
updated: "2026-07-28"
|
|
depends_on:
|
|
- FI-WP-0001
|
|
state_hub_workstream_id: "aa5b118e-36e2-41a7-b6c1-5d9ac9c7fb41"
|
|
---
|
|
|
|
# FI-WP-0002 — Activity-core daily research brief rhythm
|
|
|
|
## Goal
|
|
|
|
Schedule and emit the **Freedom Intelligence daily research brief** via
|
|
**activity-core**, following the proven Binky rhythm pattern:
|
|
|
|
```text
|
|
Temporal cron (activity-core)
|
|
→ context: fi_brief_status (due?)
|
|
→ rule emit activity_task_spawn (state-hub sink)
|
|
→ consumer (agent-harness / operator) runs playbook in freedom-intelligence
|
|
→ progress event fi_daily_brief (idempotence for next day)
|
|
```
|
|
|
|
activity-core answers **when / what / where**. It does **not** write the brief.
|
|
Execution stays in this repo (or a harness checking out this repo).
|
|
|
|
## Architecture
|
|
|
|
| Piece | Location | Role |
|
|
| ----- | -------- | ---- |
|
|
| ActivityDefinition | `freedom-intelligence/activity-definitions/fi-daily-research-brief.md` | Cron + rules |
|
|
| External def load | activity-core `ACTIVITY_DEFINITION_DIRS` / ConfigMap | Discover domain def |
|
|
| Context resolver | activity-core `fi_brief_status` | `due` for today |
|
|
| Task sink | state-hub `activity_task_spawn` | Default safe sink |
|
|
| Consumer | agent-harness Green/Blue or manual operator session | Run playbook |
|
|
| Completion | State Hub `fi_daily_brief` progress event | Clears `due` |
|
|
|
|
## Tasks
|
|
|
|
### T01 — ActivityDefinition (domain repo)
|
|
|
|
```task
|
|
id: FI-WP-0002-T01
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "4eb44be8-04b7-45c9-9e78-e573a3501524"
|
|
```
|
|
|
|
### T02 — Completion event contract + playbook hook
|
|
|
|
```task
|
|
id: FI-WP-0002-T02
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "ce61769e-9c32-4757-a691-c443e6cec37d"
|
|
```
|
|
|
|
### T03 — `fi_brief_status` context resolver (activity-core)
|
|
|
|
```task
|
|
id: FI-WP-0002-T03
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "37a5d67c-93b4-4cbd-996c-e87b9308e295"
|
|
```
|
|
|
|
### T04 — Register external activity-definitions path
|
|
|
|
```task
|
|
id: FI-WP-0002-T04
|
|
status: done
|
|
priority: high
|
|
state_hub_task_id: "ecb8df0a-4f5d-494e-9217-2906afbacf9c"
|
|
```
|
|
|
|
**Completed 2026-07-28:**
|
|
|
|
- Local: `ACTIVITY_DEFINITION_DIRS` includes `/home/worsch/freedom-intelligence`
|
|
(`.env` + `.env.example` in activity-core)
|
|
- Railiance: ConfigMap `actcore-external-activity-definitions` key
|
|
`fi-daily-research-brief.md` in `activity-core/k8s/railiance/20-runtime.yaml`
|
|
- Parser proof: definition loads from freedom-intelligence path
|
|
|
|
**Residual:** apply ConfigMap on railiance when k8s API reachable (cluster was
|
|
unreachable 2026-07-28: `92.205.62.239:6443` timeout).
|
|
|
|
### T05 — Dry-run spawn, then enable
|
|
|
|
```task
|
|
id: FI-WP-0002-T05
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "4d7a7491-f458-4984-bda1-8d212046dbc6"
|
|
```
|
|
|
|
**Completed 2026-07-28 (loop proven without Temporal):**
|
|
|
|
1. Resolver `due=true` for 2026-07-28 before completion event
|
|
2. Manual brief `briefs/2026/07/2026-07-28.md`
|
|
3. Posted `fi_daily_brief` progress event
|
|
4. Resolver `due=false` immediately after
|
|
5. Definition `enabled: true` / `status: active`
|
|
|
|
**Residual:** one-shot Temporal `POST .../trigger` + live schedule visibility
|
|
after ConfigMap apply on railiance (cannot dry-run spawn while cluster down).
|
|
|
|
### T06 — Consumer routing note
|
|
|
|
```task
|
|
id: FI-WP-0002-T06
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "2df977ea-06b4-468d-b6fb-6b40e00f8928"
|
|
```
|
|
|
|
## Acceptance (workplan-level)
|
|
|
|
- [x] Domain ActivityDefinition (`enabled: true`)
|
|
- [x] Completion event contract documented
|
|
- [x] Resolver implemented and proven live against State Hub
|
|
- [x] External path + ConfigMap entry registered
|
|
- [x] Idempotence loop proven (due → brief → event → not due)
|
|
- [x] Consumer path documented
|
|
- [x] Manual briefs: 2026-07-24, 2026-07-28
|
|
|
|
## Residual handoffs
|
|
|
|
| Residual | Owner |
|
|
| -------- | ----- |
|
|
| Apply ConfigMap + confirm Temporal schedule on railiance | activity-core / railiance ops |
|
|
| Optional: one-shot `/trigger` dry-run after apply | activity-core |
|
|
|
|
## Out of scope
|
|
|
|
- Writing the LLM brief **inside** activity-core workers
|
|
- ISSUE_SINK_TYPE=rest / Forgejo issues for this rhythm
|
|
- Weekend or multi-brief-per-day schedules
|