2026-08-03 17:53:07 +02:00
|
|
|
|
# Freedom Intelligence daily brief — activity-core recurrence
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
**Status:** activity-core schedule live; rein-aharness executor on Railiance
|
|
|
|
|
|
**Do not** use workstation crontab as the primary path (retired anti-pattern).
|
|
|
|
|
|
|
|
|
|
|
|
Canonical org playbook: `activity-core/docs/recurring-automations-playbook.md`.
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
## Design (correct layers)
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
```text
|
2026-08-03 17:53:07 +02:00
|
|
|
|
activity-core (when / what / where)
|
|
|
|
|
|
Temporal: weekdays 07:30 Europe/Berlin
|
|
|
|
|
|
context: fi_brief_status → due?
|
|
|
|
|
|
rule: emit activity_task_spawn target_repo=freedom-intelligence
|
|
|
|
|
|
│
|
|
|
|
|
|
▼
|
|
|
|
|
|
rein-aharness on railiance01 (does the work)
|
|
|
|
|
|
host timer 07:35 → fi-research-brief
|
|
|
|
|
|
llm-connect drafts brief → commit → fi_daily_brief
|
|
|
|
|
|
│
|
|
|
|
|
|
▼
|
|
|
|
|
|
freedom-intelligence repo
|
|
|
|
|
|
briefs/YYYY/MM/YYYY-MM-DD.md
|
|
|
|
|
|
catalog / RESERVE-STATUS updates as needed
|
2026-08-03 17:37:53 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
| Piece | Location |
|
|
|
|
|
|
| ----- | -------- |
|
|
|
|
|
|
| Definition (source of truth) | `activity-definitions/fi-daily-research-brief.md` |
|
|
|
|
|
|
| Cluster projection | ConfigMap `actcore-external-activity-definitions` |
|
|
|
|
|
|
| GitOps CM copy | `activity-core/k8s/railiance/20-runtime.yaml` |
|
2026-08-03 17:37:53 +02:00
|
|
|
|
| Resolver | activity-core `fi_brief_status` |
|
|
|
|
|
|
| Sink | `ISSUE_SINK_TYPE=state-hub` → `activity_task_spawn` |
|
2026-08-03 17:53:07 +02:00
|
|
|
|
| Executor | `rein-aharness fi-research-brief` |
|
|
|
|
|
|
| Host timer | `scripts/railiance-rhythm/` (interim until spawn poller) |
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
## Verify activity-core (organizer)
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-08-03 17:53:07 +02:00
|
|
|
|
# Definition enabled
|
|
|
|
|
|
kubectl -n activity-core exec deploy/actcore-api -- python3 -c \
|
|
|
|
|
|
'import urllib.request,json; d=json.loads(urllib.request.urlopen(
|
|
|
|
|
|
"http://localhost:8010/activity-definitions/").read());
|
|
|
|
|
|
print([x for x in d if "Freedom Intelligence" in (x.get("name") or "")])'
|
|
|
|
|
|
|
|
|
|
|
|
# Schedule (example id — re-check after re-sync)
|
|
|
|
|
|
# activity-schedule-3169ab1f-882b-59c7-9763-d014dc96f4fc
|
|
|
|
|
|
# paused=False, 07:30 Mon–Fri Europe/Berlin
|
|
|
|
|
|
|
|
|
|
|
|
# Ops UI: activity.coulomb.social → automations
|
|
|
|
|
|
# Manual fire: POST /activity-definitions/<id>/trigger
|
2026-08-03 17:37:53 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
After definition edits:
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
1. Update ConfigMap key from this repo’s definition file
|
|
|
|
|
|
2. Wait for volume refresh
|
|
|
|
|
|
3. `POST /admin/sync?definitions=true&schedules=true`
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
## Install executor on railiance01
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-08-03 17:53:07 +02:00
|
|
|
|
# On railiance01
|
|
|
|
|
|
git clone forgejo-remote:coulomb/freedom-intelligence.git ~/freedom-intelligence
|
|
|
|
|
|
cd ~/freedom-intelligence && ./scripts/railiance-rhythm/install-on-railiance.sh
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
# rein-aharness must expose fi-research-brief (deploy/pull rein-aharness)
|
|
|
|
|
|
# Logs: ~/.cache/freedom-intelligence/rhythm/
|
|
|
|
|
|
```
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
Timer is **07:35** Berlin — five minutes after activity-core’s 07:30 schedule.
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
## Completion event (required for due=false)
|
2026-08-03 17:37:53 +02:00
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
event_type: fi_daily_brief
|
|
|
|
|
|
detail:
|
|
|
|
|
|
repo: freedom-intelligence
|
|
|
|
|
|
date: "YYYY-MM-DD"
|
|
|
|
|
|
path: "briefs/YYYY/MM/YYYY-MM-DD.md"
|
|
|
|
|
|
collection_candidates: <int>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 17:53:07 +02:00
|
|
|
|
Posted automatically by `rein-aharness fi-research-brief` on success.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## What not to do
|
|
|
|
|
|
|
|
|
|
|
|
- Workstation `crontab` that writes the brief (bypasses activity-core)
|
|
|
|
|
|
- Installing Claude Code / Codex on railiance01 for this rhythm
|
|
|
|
|
|
- Treating host timers as the scheduler of record
|
|
|
|
|
|
- Skipping the completion event (leaves `due=true` forever)
|