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).
4.2 KiB
4.2 KiB
| id | type | title | domain | repo | status | owner | topic_slug | priority | created | updated | depends_on | state_hub_workstream_id | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FI-WP-0002 | workplan | Activity-core daily research brief rhythm | agents | freedom-intelligence | finished | grok | freedom-intelligence | high | 2026-07-24 | 2026-07-28 |
|
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:
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)
id: FI-WP-0002-T01
status: done
priority: high
state_hub_task_id: "4eb44be8-04b7-45c9-9e78-e573a3501524"
T02 — Completion event contract + playbook hook
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)
id: FI-WP-0002-T03
status: done
priority: high
state_hub_task_id: "37a5d67c-93b4-4cbd-996c-e87b9308e295"
T04 — Register external activity-definitions path
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_DIRSincludes/home/worsch/freedom-intelligence(.env+.env.examplein activity-core) - Railiance: ConfigMap
actcore-external-activity-definitionskeyfi-daily-research-brief.mdinactivity-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
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):
- Resolver
due=truefor 2026-07-28 before completion event - Manual brief
briefs/2026/07/2026-07-28.md - Posted
fi_daily_briefprogress event - Resolver
due=falseimmediately after - 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
id: FI-WP-0002-T06
status: done
priority: medium
state_hub_task_id: "2df977ea-06b4-468d-b6fb-6b40e00f8928"
Acceptance (workplan-level)
- Domain ActivityDefinition (
enabled: true) - Completion event contract documented
- Resolver implemented and proven live against State Hub
- External path + ConfigMap entry registered
- Idempotence loop proven (due → brief → event → not due)
- Consumer path documented
- 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