freedom-intelligence/workplans/FI-WP-0002-activity-core-daily-research.md
tegwick 77d4ffe86e Finish FI-WP-0002 and FI-WP-0003: daily rhythm and R-spine reserve.
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).
2026-07-28 01:30:55 +02:00

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
FI-WP-0001
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_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

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

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