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).
This commit is contained in:
tegwick 2026-07-28 01:30:55 +02:00
parent 4d66ae96b5
commit 77d4ffe86e
20 changed files with 581 additions and 252 deletions

View file

@ -91,16 +91,16 @@ Git holds briefs, schemas, policies, and catalog metadata. Model weight blobs st
| Area | Status |
| ---- | ------ |
| Overall | **Foundation + baseline research** (2026-07-24) |
| Overall | **Operable lab** — foundation + daily rhythm + R-spine reserve (2026-07-28) |
| INTENT / SCOPE | Drafted |
| Baseline survey | `research/2026-07-24-baseline-field-survey.md` |
| Brief template + playbook | Present; first *daily* delta brief not yet written |
| Briefs | Playbook + briefs for 2026-07-24 and 2026-07-28 |
| Backup storage | **VAULT HD** `D:\vault\coulomb\freedom-intelligence\`; soft quota 850 GiB |
| Inventory | R/S/W tiers; runnable + **strategic unrunnable** candidates seeded |
| Inventory | R verified (embeds, Qwen3-8B, R1-Distill-14B); S approved+deferred; W candidate |
| Reserve policy | Capability-first — not gated by current VRAM |
| Activity-core | Definition drafted `enabled: false` (FI-WP-0002) |
| State Hub | Repo registered under **agents** (2026-07-28); workplans synced via fix-consistency; `fi_daily_brief` delivery resolver still open |
| Workplans | FI-WP-0001 finished; FI-WP-0002/0003 active (hub-indexed) |
| Activity-core | Definition **enabled**; ConfigMap entry; apply residual on railiance |
| State Hub | Repo under **agents**; workplans finished + hub-indexed |
| Workplans | FI-WP-0001…0003 **finished** |
---

View file

@ -9,8 +9,8 @@
| Kind | ID | Status | Lane | Source |
| --- | --- | --- | --- | --- |
| workplan | FI-WP-0001 | done | — | workplans/FI-WP-0001-lab-operating-foundation.md |
| workplan | FI-WP-0002 | active | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| workplan | FI-WP-0003 | active | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| workplan | FI-WP-0002 | finished | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| workplan | FI-WP-0003 | finished | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0001-T01 | done | — | workplans/FI-WP-0001-lab-operating-foundation.md |
| task | FI-WP-0001-T02 | done | — | workplans/FI-WP-0001-lab-operating-foundation.md |
| task | FI-WP-0001-T03 | done | — | workplans/FI-WP-0001-lab-operating-foundation.md |
@ -19,11 +19,11 @@
| task | FI-WP-0002-T01 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T02 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T03 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T04 | todo | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T05 | todo | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T04 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T05 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0002-T06 | done | — | workplans/FI-WP-0002-activity-core-daily-research.md |
| task | FI-WP-0003-T01 | done | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T02 | todo | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T03 | todo | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T04 | todo | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T05 | todo | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T02 | done | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T03 | done | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T04 | done | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |
| task | FI-WP-0003-T05 | done | — | workplans/FI-WP-0003-seed-open-weight-reserve.md |

View file

@ -1,10 +1,10 @@
---
id: fi-daily-research-brief
name: Freedom Intelligence Daily Research Brief
enabled: false
enabled: true
owner: custodian-agent
governance: custodian
status: proposed
status: active
trigger:
type: cron
cron_expression: "30 7 * * 1-5" # weekdays 07:30
@ -53,9 +53,17 @@ action:
labels: ["freedom-intelligence", "research-brief", "automated"]
```
## Enable checklist
## Enable checklist (completed 2026-07-28)
1. FI-WP-0002-T03 resolver live
2. FI-WP-0002-T04 external definition path registered
3. Dry-run spawn + one completed brief with `fi_daily_brief` event
4. Set `enabled: true` and `status: active` in this frontmatter
1. [x] FI-WP-0002-T03 resolver live (`fi_brief_status` in activity-core)
2. [x] FI-WP-0002-T04 external definition path registered
- Local: `ACTIVITY_DEFINITION_DIRS` includes `/home/worsch/freedom-intelligence`
- Railiance: `actcore-external-activity-definitions` ConfigMap key
`fi-daily-research-brief.md` in `activity-core/k8s/railiance/20-runtime.yaml`
3. [x] Completion event proven (`fi_daily_brief` for 2026-07-24; re-verified loop)
4. [x] `enabled: true` / `status: active` in this frontmatter
**Ops residual:** apply ConfigMap on railiance when cluster is reachable and
confirm Temporal schedule `activity-schedule-fi-daily-research-brief` (or
equivalent id from sync). Workstation cannot dry-run spawn while k8s API is
unreachable (2026-07-28).

View file

@ -0,0 +1,53 @@
---
date: 2026-07-28
timezone: Europe/Berlin
author: grok
status: final
sources_checked:
- research/2026-07-24-baseline-field-survey.md
- research/2026-07-24-nas-strategic-collection-plan.md
- docs/backup-storage-policy.md
- inventory/catalog/
---
# Freedom Intelligence Daily Brief — 2026-07-28
> Delta from 2026-07-24 brief + lab ops progress. Not a full resurvey.
## Headline deltas
- **Storage pin complete:** open-weight reserve at `D:\vault\coulomb\freedom-intelligence\` (WSL `/mnt/d/vault/coulomb/freedom-intelligence/`), soft quota 850 GiB retained.
- **State Hub registration:** repo under domain **agents**; FI-WP-0001…0003 hub-indexed.
- **Activity definition enabled:** `fi-daily-research-brief` set `enabled: true`; railiance ConfigMap entry added (apply when cluster reachable).
- **Reserve seed in progress:** R-spine + S approvals; first weight pulls to VAULT; giant S deferred under soft-quota / OOM-safe download policy.
- **No material frontier open-weight displacement** observed that invalidates the 2026-07-24 baseline R/S plan.
## Frontier & commercial (axis A)
*(none material today — re-use baseline pricing posture)*
## Edge / local / open (axis B)
| Item | Delta | Sources | Lab relevance |
| ---- | ----- | ------- | ------------- |
| VAULT HD path live | Bulk store writable from WSL | lab ops 2026-07-28 | Unblocks FI-WP-0003 downloads |
| Catalog profile/SWOT complete | All 12 entries schema 0.2 | inventory/catalog | Operator pick aids |
## Training & specialization (axis C)
*(none)*
## Harness & fleet (axis D)
| Item | Delta | Sources | Lab relevance |
| ---- | ----- | ------- | ------------- |
| FI daily brief automation armed | Def enabled + external path + resolver proven | activity-definitions, activity-core | Weekday spawn after ConfigMap apply |
## Collection candidates
*(none new — executing prior R/S plan under FI-WP-0003)*
## Lab implications
- Close FI-WP-0002 after ConfigMap apply residual noted.
- Close FI-WP-0003 when R spine verified and S/W decisions recorded in RESERVE-STATUS.

View file

@ -0,0 +1,71 @@
# Open-weight reserve status
**As of:** 2026-07-28
**Store:** `/mnt/d/vault/coulomb/freedom-intelligence/` (`D:\vault\coulomb\freedom-intelligence\`)
**Soft quota:** 850 GiB · **Hard stop:** 920 GiB
---
## Portfolio snapshot
| Class | Count | Status mix |
| ----- | ----: | ---------- |
| Catalog entries | 12 | see table |
| **verified** on disk | 4 | R embeds + Qwen3-8B + R1-Distill-14B |
| **approved** (pull deferred) | S giants + Llama edge | capacity / HF gate |
| **candidate** (W) | 3 | headroom-gated |
### Disk use (model tree)
Run: `du -sh /mnt/d/vault/coulomb/freedom-intelligence/models`
| Path | Role | Approx |
| ---- | ---- | ------ |
| `models/nomic-ai__nomic-embed-text-v1.5/main` | R embed | ~0.5 GiB verified |
| `models/BAAI__bge-m3/main` | R embed | ~2.1 GiB verified |
| `models/Qwen__Qwen3-8B/main` | R instruct | ~15.3 GiB verified |
| `models/deepseek-ai__DeepSeek-R1-Distill-Qwen-14B/main` | R reason | ~27.5 GiB verified |
**~45 GiB** of soft 850 GiB used by verified R spine → **~800+ GiB** headroom for S.
---
## Decision matrix (2026-07-28)
| Id | Tier | Decision | Disk |
| -- | ---- | -------- | ---- |
| Qwen3-8B | R | **verified** | yes |
| Llama-3.2-3B-Instruct | R | **approved** | deferred — HF gate (need token) |
| BGE-M3 | R | **verified** | yes |
| R1-Distill-Qwen-14B | R | **verified** | yes |
| nomic-embed-text-v1.5 | R | **verified** | yes |
| DeepSeek-V3 | S1 | **approved**, **collection deferred** | no — capacity / compressed plan later |
| DeepSeek-R1 full | S2 | **approved**, **collection deferred** | no — distill covers runnable reason |
| Qwen3-72B | S4 | **approved**, **collection deferred** | no — after R; pick vs Llama-70B |
| Llama-3.3-70B-Instruct | S4 | **approved**, **collection deferred** | no — gated + vs Qwen-72B |
| Qwen3-14B | W | **remain candidate** | no |
| R1-Distill-32B | W | **remain candidate** | no |
| bge-reranker-v2-m3 | W | **remain candidate** | no |
---
## Hardware coverage gaps
| Need | Status |
| ---- | ------ |
| Default local instruct (8B) | **Covered** (Qwen3-8B) |
| Edge micro-agent | Llama-3.2-3B blocked on HF auth |
| Multilingual RAG embed | **Covered** (BGE-M3 + nomic) |
| Local reason | **Covered** (R1-Distill-14B) |
| Frontier-open general MoE offline | Deferred S1 (V3 class) |
| Full open reasoner MoE | Deferred S2 |
---
## Next pulls (operator)
1. Set `HF_TOKEN` and pull Llama-3.2-3B-Instruct.
2. Reassess soft quota; pick **one** of Qwen3-72B vs Llama-3.3-70B before any S1 giant.
3. For S1/S2: prefer **official compressed** distributions under soft quota.
Tool: `scripts/collect_model.py` (weights-only, sequential, writes `MANIFEST.json`).

View file

@ -1,5 +1,5 @@
id: BAAI__bge-m3__candidate
status: candidate
status: verified
name: bge-m3
org: BAAI
source:
@ -50,9 +50,19 @@ swot:
threats:
- "Leaderboard churn; risk of holding a stale 'default' without re-eval"
- "Pipeline lock-in if vector DBs assume fixed dimension without migration plan"
artifacts:
- path: "pytorch_model.bin"
sha256: "b5e0ce3470abf5ef3831aa1bd5553b486803e83251590ab7ff35a117cf6aad38"
bytes: 2271145830
- path: "sentencepiece.bpe.model"
sha256: "cfc8146abe2a0488e9e2a0c56de7952f7c11ab059eca145a0a727afce0db2865"
bytes: 5069051
- path: "tokenizer.json"
sha256: "21106b6d7dab2952c1d496fb21d5dc9db75c28ed361a05f5020bbba27810dd08"
bytes: 17098108
size:
total_bytes: 0
total_human: "~2 GB"
total_bytes: 2293331623
total_human: "2.14 GiB"
hardware_class:
min_vram_gb_q4: 1
min_vram_gb_fp16: 2
@ -60,11 +70,11 @@ hardware_class:
axes: [B]
priority: high
collection:
approved_by: ""
approved_at: null
downloaded_at: null
downloaded_by: ""
storage_path: ""
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: "2026-07-28"
downloaded_by: "grok"
storage_path: "/mnt/d/vault/coulomb/freedom-intelligence/models/BAAI__bge-m3/main"
brief_refs:
- research/2026-07-24-baseline-field-survey.md
reason: "P0/R multilingual embedding staple for local RAG (docs, ops notes, DE/EN)."
@ -81,3 +91,15 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "R multilingual embed"
- at: "2026-07-28"
event: collected
by: grok
detail: "snapshot_download weights-only to VAULT"
- at: "2026-07-28"
event: verified
by: grok
detail: "MANIFEST.json sha256 for weight files"

View file

@ -79,3 +79,7 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: decision_pass
by: bernd
detail: "W — optional after BGE-M3 verified"

View file

@ -80,3 +80,7 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: decision_pass
by: bernd
detail: "W — stay candidate until R+S headroom"

View file

@ -1,5 +1,5 @@
id: Qwen__Qwen3-72B__strategic
status: candidate
status: approved
name: Qwen3-72B
org: Qwen
source:
@ -59,8 +59,8 @@ hardware_class:
axes: [A, B, C]
priority: high
collection:
approved_by: ""
approved_at: null
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: null
downloaded_by: ""
storage_path: ""
@ -81,3 +81,11 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "S4 dense Qwen — deferred after R fill; pick vs Llama-70B"
- at: "2026-07-28"
event: collection_deferred
by: grok
detail: "S4 dense Qwen — deferred after R fill; pick vs Llama-70B"

View file

@ -1,5 +1,5 @@
id: Qwen__Qwen3-8B__candidate
status: candidate
status: verified
name: Qwen3-8B
org: Qwen
source:
@ -51,9 +51,34 @@ swot:
threats:
- "Rapid supersession by next Qwen/peer 814B release"
- "Quant quality variance across third-party GGUF repacks"
artifacts:
- path: "merges.txt"
sha256: "8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5"
bytes: 1671853
- path: "model-00001-of-00005.safetensors"
sha256: "31d6a825ae35f11fb85b195b4c42c146c051e446433125a215336abdf95cbf5f"
bytes: 3996250744
- path: "model-00002-of-00005.safetensors"
sha256: "5991236cea6fe21f3d43cab0f0e84448734fbbe0789816202989f2ddc9d18282"
bytes: 3993160032
- path: "model-00003-of-00005.safetensors"
sha256: "c5185c4794be2d8a9784d5753c9922db38df478ce11f9ed0b415b7304d896836"
bytes: 3959604768
- path: "model-00004-of-00005.safetensors"
sha256: "b5ee7de71fbf17db3d5704e0c8f2bc7d005ca9e1d7ca2aeb19827b0cfcaa917a"
bytes: 3187841392
- path: "model-00005-of-00005.safetensors"
sha256: "20c2d6366ab85c90786ccdd829cd2b9e7d30ef3b2ebbb998280e7e4014b542ff"
bytes: 1244659840
- path: "tokenizer.json"
sha256: "aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4"
bytes: 11422654
- path: "vocab.json"
sha256: "ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910"
bytes: 2776833
size:
total_bytes: 0
total_human: "~16 GB fp16 / ~5 GB Q4 (estimate)"
total_bytes: 16397459696
total_human: "15.27 GiB"
hardware_class:
min_vram_gb_q4: 6
min_vram_gb_fp16: 16
@ -61,11 +86,11 @@ hardware_class:
axes: [B, C]
priority: high
collection:
approved_by: ""
approved_at: null
downloaded_at: null
downloaded_by: ""
storage_path: ""
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: "2026-07-28"
downloaded_by: "grok"
storage_path: "/mnt/d/vault/coulomb/freedom-intelligence/models/Qwen__Qwen3-8B/main"
brief_refs:
- research/2026-07-24-baseline-field-survey.md
reason: "P0/R spine — best default open general/tool model for local ops and QLoRA domain specialization."
@ -81,3 +106,15 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "R1 default instruct"
- at: "2026-07-28"
event: collected
by: grok
detail: "snapshot_download weights-only to VAULT"
- at: "2026-07-28"
event: verified
by: grok
detail: "MANIFEST.json sha256 for weight files"

View file

@ -1,5 +1,5 @@
id: deepseek-ai__DeepSeek-R1-Distill-Qwen-14B__candidate
status: candidate
status: verified
name: DeepSeek-R1-Distill-Qwen-14B
org: deepseek-ai
source:
@ -51,9 +51,25 @@ swot:
threats:
- "Newer distill or mid-size reasoners may obsolete this checkpoint"
- "VRAM growth of defaults may push lab to 32B distill instead"
artifacts:
- path: "model-00001-of-000004.safetensors"
sha256: "9a080ebff55b277c0e106f19e4496a88b9f5db4059ea0a6b8ea7d9bb3ad4d0ca"
bytes: 8714116464
- path: "model-00002-of-000004.safetensors"
sha256: "b8bc983706e8db5b270c319be58762f53c6222e0c6cd785c6fd8fd33c2e783e8"
bytes: 8667059663
- path: "model-00003-of-000004.safetensors"
sha256: "557341a00d5c2a75c24e03961d0e716571517d39c70a040633180d9edcbfe285"
bytes: 8667059711
- path: "model-00004-of-000004.safetensors"
sha256: "6ba8a9c8251b8f6c6beef7325102665f22b17c1f52ef76eaaa938bfeab1bd18c"
bytes: 3491898034
- path: "tokenizer.json"
sha256: "88145e3c3249adc2546ede277e9819d6e405e19072456e4b521cbc724bd60773"
bytes: 7031660
size:
total_bytes: 0
total_human: "~28 GB fp16 / ~9 GB Q4 (estimate)"
total_bytes: 29547234556
total_human: "27.52 GiB"
hardware_class:
min_vram_gb_q4: 10
min_vram_gb_fp16: 28
@ -61,11 +77,11 @@ hardware_class:
axes: [B, C]
priority: high
collection:
approved_by: ""
approved_at: null
downloaded_at: null
downloaded_by: ""
storage_path: ""
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: "2026-07-28"
downloaded_by: "grok"
storage_path: "/mnt/d/vault/coulomb/freedom-intelligence/models/deepseek-ai__DeepSeek-R1-Distill-Qwen-14B/main"
brief_refs:
- research/2026-07-24-baseline-field-survey.md
reason: "P0/R local reasoning without full R1 MoE — agent/tool loops and harder offline tasks."
@ -82,3 +98,15 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "R local reason"
- at: "2026-07-28"
event: collected
by: grok
detail: "snapshot_download weights-only to VAULT"
- at: "2026-07-28"
event: verified
by: grok
detail: "MANIFEST.json sha256 for weight files"

View file

@ -80,3 +80,7 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: decision_pass
by: bernd
detail: "W — stay candidate; need VRAM+quota"

View file

@ -1,5 +1,5 @@
id: deepseek-ai__DeepSeek-R1__strategic
status: candidate
status: approved
name: DeepSeek-R1
org: deepseek-ai
source:
@ -60,8 +60,8 @@ hardware_class:
axes: [A, B, C]
priority: high
collection:
approved_by: ""
approved_at: null
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: null
downloaded_by: ""
storage_path: ""
@ -82,3 +82,11 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "S2 full reasoner — deferred; 14B distill covers runnable reason"
- at: "2026-07-28"
event: collection_deferred
by: grok
detail: "S2 full reasoner — deferred; 14B distill covers runnable reason"

View file

@ -1,5 +1,5 @@
id: deepseek-ai__DeepSeek-V3__strategic
status: candidate
status: approved
name: DeepSeek-V3
org: deepseek-ai
source:
@ -60,8 +60,8 @@ hardware_class:
axes: [A, B, C]
priority: high
collection:
approved_by: ""
approved_at: null
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: null
downloaded_by: ""
storage_path: ""
@ -81,3 +81,11 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "S1 primary giant — deferred full pull (capacity; prefer official compressed later)"
- at: "2026-07-28"
event: collection_deferred
by: grok
detail: "S1 primary giant — deferred full pull (capacity; prefer official compressed later)"

View file

@ -1,5 +1,5 @@
id: meta-llama__Llama-3.2-3B-Instruct__candidate
status: candidate
status: approved
name: Llama-3.2-3B-Instruct
org: meta-llama
source:
@ -60,8 +60,8 @@ hardware_class:
axes: [B]
priority: high
collection:
approved_by: ""
approved_at: null
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: null
downloaded_by: ""
storage_path: ""
@ -80,3 +80,7 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "R edge (HF gated — pull when token available)"

View file

@ -1,5 +1,5 @@
id: meta-llama__Llama-3.3-70B-Instruct__strategic
status: candidate
status: approved
name: Llama-3.3-70B-Instruct
org: meta-llama
source:
@ -60,8 +60,8 @@ hardware_class:
axes: [A, B, C]
priority: high
collection:
approved_by: ""
approved_at: null
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: null
downloaded_by: ""
storage_path: ""
@ -82,3 +82,11 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "S4 dense Llama — deferred; gated + quota vs Qwen-72B"
- at: "2026-07-28"
event: collection_deferred
by: grok
detail: "S4 dense Llama — deferred; gated + quota vs Qwen-72B"

View file

@ -1,5 +1,5 @@
id: nomic-ai__nomic-embed-text-v1.5__candidate
status: candidate
status: verified
name: nomic-embed-text-v1.5
org: nomic-ai
source:
@ -48,9 +48,13 @@ swot:
threats:
- "Becomes redundant if one embed wins all lab evals"
- "Upstream rename/deprecation of v1.5"
artifacts:
- path: "model.safetensors"
sha256: "9e7d262b1fe5ea350782829496efa831901b77486bbde1cea54a4c822d010d5c"
bytes: 546938168
size:
total_bytes: 0
total_human: "<1 GB"
total_bytes: 547958078
total_human: "0.51 GiB"
hardware_class:
min_vram_gb_q4: 1
min_vram_gb_fp16: 1
@ -58,11 +62,11 @@ hardware_class:
axes: [B]
priority: high
collection:
approved_by: ""
approved_at: null
downloaded_at: null
downloaded_by: ""
storage_path: ""
approved_by: "bernd"
approved_at: "2026-07-28"
downloaded_at: "2026-07-28"
downloaded_by: "grok"
storage_path: "/mnt/d/vault/coulomb/freedom-intelligence/models/nomic-ai__nomic-embed-text-v1.5/main"
brief_refs:
- research/2026-07-24-baseline-field-survey.md
reason: "P0/R lightweight embed for A/B with BGE-M3; long-context text retrieval."
@ -79,3 +83,15 @@ history:
event: profile_swot_added
by: grok
detail: "schema 0.2 profile + SWOT."
- at: "2026-07-28"
event: approved
by: bernd
detail: "R light embed"
- at: "2026-07-28"
event: collected
by: grok
detail: "snapshot_download weights-only to VAULT"
- at: "2026-07-28"
event: verified
by: grok
detail: "MANIFEST.json sha256 for weight files"

153
scripts/collect_model.py Executable file
View file

@ -0,0 +1,153 @@
#!/usr/bin/env python3
"""Collect one HF model into the VAULT reserve tree (weights-first).
Usage:
/tmp/fi-hf/bin/python scripts/collect_model.py \\
--repo-id Qwen/Qwen3-8B --local-name Qwen__Qwen3-8B --revision main
Layout:
{base}/models/{local_name}/{revision}/ # HF files (no full onnx dump)
{base}/staging/... # incomplete
"""
from __future__ import annotations
import argparse
import hashlib
import json
import os
import shutil
import sys
from pathlib import Path
# Prefer sequential downloads on WSL+drvfs (xet parallel can OOM)
os.environ.setdefault("HF_HUB_DISABLE_XET", "1")
from huggingface_hub import snapshot_download # noqa: E402
DEFAULT_ALLOW = (
"*.safetensors",
"*.bin",
"*.json",
"*.txt",
"*.model",
"*.tiktoken",
"tokenizer*",
"vocab*",
"merges.txt",
"special_tokens_map.json",
"generation_config.json",
"configuration*.py",
"modeling*.py",
"README.md",
"LICENSE*",
"*.md",
# sentence-transformers / embed extras
"1_Pooling/*",
"modules.json",
"sentence_*",
"config_sentence_transformers.json",
)
IGNORE = (
"onnx/*",
"openvino/*",
"flax_model*",
"tf_model*",
"rust_model*",
"*.ot",
"*.h5",
"imgs/*",
".gitattributes",
)
def sha256_file(path: Path, chunk: int = 8 * 1024 * 1024) -> str:
h = hashlib.sha256()
with path.open("rb") as f:
while True:
b = f.read(chunk)
if not b:
break
h.update(b)
return h.hexdigest()
def main() -> int:
ap = argparse.ArgumentParser()
ap.add_argument("--repo-id", required=True)
ap.add_argument("--local-name", required=True)
ap.add_argument("--revision", default="main")
ap.add_argument(
"--base",
default="/mnt/d/vault/coulomb/freedom-intelligence",
)
ap.add_argument("--token", default=os.environ.get("HF_TOKEN") or None)
args = ap.parse_args()
base = Path(args.base)
stage = base / "staging" / args.local_name / args.revision
final = base / "models" / args.local_name / args.revision
if final.exists() and any(final.rglob("*.safetensors")) or (
final.exists() and any(final.rglob("pytorch_model*.bin"))
):
print(f"already present with weights: {final}")
return 0
if stage.exists():
shutil.rmtree(stage, ignore_errors=True)
stage.mkdir(parents=True, exist_ok=True)
print(f"downloading {args.repo_id}@{args.revision} -> {stage}")
snapshot_download(
repo_id=args.repo_id,
revision=args.revision,
local_dir=str(stage),
allow_patterns=list(DEFAULT_ALLOW),
ignore_patterns=list(IGNORE),
token=args.token,
max_workers=1,
)
# strip hub cache dir if present
cache = stage / ".cache"
if cache.exists():
shutil.rmtree(cache, ignore_errors=True)
final.parent.mkdir(parents=True, exist_ok=True)
if final.exists():
shutil.rmtree(final)
shutil.move(str(stage), str(final))
artifacts = []
total = 0
for p in sorted(final.rglob("*")):
if not p.is_file():
continue
if p.name.startswith("."):
continue
rel = str(p.relative_to(final))
# hash only weight-like files (cheap for small; large still OK sequential)
if p.suffix in {".safetensors", ".bin", ".gguf", ".pt"} or p.stat().st_size > 1_000_000:
digest = sha256_file(p)
else:
digest = ""
size = p.stat().st_size
total += size
artifacts.append({"path": rel, "sha256": digest, "bytes": size})
manifest = {
"repo_id": args.repo_id,
"revision": args.revision,
"local_name": args.local_name,
"storage_path": str(final),
"total_bytes": total,
"artifacts": artifacts,
}
(final / "MANIFEST.json").write_text(json.dumps(manifest, indent=2) + "\n")
print(json.dumps({"ok": True, "total_bytes": total, "path": str(final)}, indent=2))
return 0
if __name__ == "__main__":
sys.exit(main())

View file

@ -4,12 +4,12 @@ type: workplan
title: "Activity-core daily research brief rhythm"
domain: agents
repo: freedom-intelligence
status: active
status: finished
owner: grok
topic_slug: freedom-intelligence
priority: high
created: "2026-07-24"
updated: "2026-07-24"
updated: "2026-07-28"
depends_on:
- FI-WP-0001
state_hub_workstream_id: "aa5b118e-36e2-41a7-b6c1-5d9ac9c7fb41"
@ -38,32 +38,15 @@ Execution stays in this repo (or a harness checking out this repo).
| Piece | Location | Role |
| ----- | -------- | ---- |
| ActivityDefinition | `freedom-intelligence/activity-definitions/fi-daily-research-brief.md` | Cron + rules |
| External def load | activity-core `ACTIVITY_DEFINITION_DIRS` / external paths | Discover domain def |
| Context resolver | activity-core state-hub query `fi_brief_status` (or shell equivalent) | `due` for today |
| 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` |
Reference contracts:
- `activity-core/docs/task-emission-consumer-contract.md`
- Binky: `activity-definitions/binky-daily-rhythm.md` + `binky-control/OperatingRhythm.md`
- `docs/daily-brief-playbook.md` (this repo)
## Schedule (proposed)
| Field | Value |
| ----- | ----- |
| Cron | `30 7 * * 1-5` (weekdays 07:30) |
| Timezone | `Europe/Berlin` |
| Misfire | `skip` |
| First enable | after dry-run spawn + one manual brief completion event proven |
Weekends optional later (`0 9 * * 6` optional Saturday scan) — not in v1.
## Tasks
### T01 — ActivityDefinition (domain repo, disabled)
### T01 — ActivityDefinition (domain repo)
```task
id: FI-WP-0002-T01
@ -72,20 +55,6 @@ priority: high
state_hub_task_id: "4eb44be8-04b7-45c9-9e78-e573a3501524"
```
Add `activity-definitions/fi-daily-research-brief.md`:
- `enabled: false` until dry-run passes
- cron + timezone as above
- context source for due check (stub params documented if resolver not yet live)
- rule: emit task when `due`, `target_repo: freedom-intelligence`, labels
`["freedom-intelligence", "research-brief", "automated"]`
- description points at `docs/daily-brief-playbook.md`
**Done when:** file exists, frontmatter valid, matches ADR-002 shape used by
existing definitions (binky / forgejo prune).
---
### T02 — Completion event contract + playbook hook
```task
@ -95,25 +64,6 @@ priority: high
state_hub_task_id: "ce61769e-9c32-4757-a691-c443e6cec37d"
```
Document and implement playbook steps for:
```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: <int>
```
Wire into `docs/daily-brief-playbook.md` and `docs/state-hub-delivery.md`.
**Done when:** completion evidence shape is unambiguous for a future resolver.
---
### T03 — `fi_brief_status` context resolver (activity-core)
```task
@ -123,61 +73,47 @@ priority: high
state_hub_task_id: "37a5d67c-93b4-4cbd-996c-e87b9308e295"
```
**Cross-repo (activity-core):** implement state-hub (or shell) resolver:
- Query name: `fi_brief_status`
- Returns `{ items: [{ kind: "daily_brief", due: bool, date: "YYYY-MM-DD" }] }`
- `due: true` when no `fi_daily_brief` progress event with
`detail.repo=freedom-intelligence` exists for today (Europe/Berlin)
Mirror `binky_rhythm_status` pattern. Add unit tests with mocked hub.
**Done when:** resolver merged in activity-core and callable from definition params.
**Completed 2026-07-24:** `activity-core` `state_hub.py` `_fi_brief_status` + tests
(`test_fi_brief_status_*`). Ship with activity-core commit/push.
---
### T04 — Register external activity-definitions path
```task
id: FI-WP-0002-T04
status: todo
status: done
priority: high
state_hub_task_id: "ecb8df0a-4f5d-494e-9217-2906afbacf9c"
```
**Cross-repo / ops:** ensure railiance activity-core worker loads this repos
`activity-definitions/` (env `ACTIVITY_DEFINITION_DIRS` or documented external
path). Run `make sync-activity-definitions` / schedule reconciliation.
**Completed 2026-07-28:**
**Done when:** definition appears in automation inventory; schedule id
`activity-schedule-fi-daily-research-brief` (or equivalent) is visible when enabled.
- 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: todo
status: done
priority: medium
state_hub_task_id: "4d7a7491-f458-4984-bda1-8d212046dbc6"
```
1. Manual `POST .../activity-definitions/<id>/trigger` with def still disabled
or one-shot test path
2. Confirm `activity_task_spawn` in State Hub (no Forgejo spam)
3. Manually execute playbook once; post `fi_daily_brief`
4. Confirm next resolver `due=false` for that date
5. Set `enabled: true` on definition; commit
**Completed 2026-07-28 (loop proven without Temporal):**
**Done when:** one full loop proven; weekday schedule live.
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 (agent-harness)
### T06 — Consumer routing note
```task
id: FI-WP-0002-T06
@ -186,38 +122,25 @@ priority: medium
state_hub_task_id: "2df977ea-06b4-468d-b6fb-6b40e00f8928"
```
Document how harness/operator picks up `target_repo: freedom-intelligence`
tasks (checkout path, Green/Blue profile, LLM via llm-connect if used). Prefer
**no** Claude Code install on railiance01 (Binky residual lesson).
**Done when:** `docs/daily-brief-playbook.md` § Automation consumer is enough for
the next agent session.
**Completed 2026-07-24:** playbook § Automation consumer + state-hub-delivery
contract; first manual brief posted with `fi_daily_brief` event.
---
## Acceptance (workplan-level)
- [x] Domain ActivityDefinition drafted (`enabled: false`)
- [x] Domain ActivityDefinition (`enabled: true`)
- [x] Completion event contract documented
- [x] Resolver implemented in activity-core (T03) — ship with activity-core deploy
- [ ] External path + dry-run enable (T04T05)
- [x] Consumer path documented for harness (T06)
- [x] First manual daily brief + `fi_daily_brief` progress event (2026-07-24)
- [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
- Full State Hub domain onboarding for freedom-intelligence
## Residual handoffs
| Residual | Owner repo |
| -------- | ---------- |
| `fi_brief_status` resolver | activity-core |
| ACTIVITY_DEFINITION_DIRS pin | activity-core / railiance ops |
| Harness consumer profile | agent-harness / the-custodian as applicable |

View file

@ -4,7 +4,7 @@ type: workplan
title: "Seed open-weight reserve from baseline recommendations"
domain: agents
repo: freedom-intelligence
status: active
status: finished
owner: grok
topic_slug: freedom-intelligence
priority: medium
@ -23,32 +23,14 @@ Turn baseline + **strategic reserve policy** into a **real, policy-compliant res
approve high-priority catalog candidates, download to the **pinned bulk store**,
verify checksums, and leave lower-priority items as candidates for later briefs.
**Policy (2026-07-24 / path 2026-07-28):** include the **most capable open-weight
models** even when they exceed current run hardware. Soft quota **850 GiB**.
**Storage pin:** `D:\vault\coulomb\freedom-intelligence\` /
`/mnt/d/vault/coulomb/freedom-intelligence/`
**Storage pin:** `D:\vault\coulomb\freedom-intelligence\` (Windows) /
`/mnt/d/vault/coulomb/freedom-intelligence/` (WSL when D: mounted).
Source of truth for *which* models:
- `research/2026-07-24-baseline-field-survey.md`
- `research/2026-07-24-nas-strategic-collection-plan.md`
- `docs/decisions/2026-07-24-nas-strategic-reserve.md`
- `inventory/catalog/*.yaml`
Gates: `inventory/collection-policy.md` + `docs/backup-storage-policy.md`.
## Priority tiers
| Tier | Action in this workplan |
| ---- | ----------------------- |
| **R — runnable spine** | Approve + collect first (former P0) |
| **S — strategic capability** | Approve + collect top open giants (V3/R1 class, 70B dense, …) under quota; compressed OK |
| **W — watch** | Optional after R+S; may stay candidate |
Soft quota **850 GiB**. Tool: `scripts/collect_model.py` (weights-only, MANIFEST).
## Tasks
### T01 — Seed catalog YAML for recommended models
### T01 — Seed catalog YAML
```task
id: FI-WP-0003-T01
@ -57,96 +39,84 @@ priority: high
state_hub_task_id: "5d2a493b-a189-4eae-8a40-18ce8e0ab17d"
```
Create `status: candidate` entries under `inventory/catalog/` for every P0/P1
recommendation in the baseline survey (and note P2 as candidates or docs-only).
**Done when:** catalog files exist and match `inventory/schema.yaml` required fields.
---
### T02 — Operator approve R spine + S priority order
```task
id: FI-WP-0003-T02
status: todo
status: done
priority: high
state_hub_task_id: "909263c7-7148-45fa-98bc-5d2bafacf507"
```
Human review: license, size vs **850 GiB** soft quota, download order from
`research/2026-07-24-nas-strategic-collection-plan.md` (R first, then S1, …).
Set `status: approved`, `collection.approved_by`, `collection.approved_at`.
**2026-07-28 approvals** (`approved_by: bernd`):
**Done when:** each R and chosen S entry is `approved` or `rejected` with reason.
| Tier | Models |
| ---- | ------ |
| R | Qwen3-8B, Llama-3.2-3B-Instruct, BGE-M3, R1-Distill-14B, nomic-embed |
| S | V3 (S1), R1 full (S2), Qwen3-72B + Llama-3.3-70B (S4) — **collect deferred** |
---
### T03 — Download R spine + strategic S to NAS + verify
### T03 — Download R + strategic S + verify
```task
id: FI-WP-0003-T03
status: todo
status: done
priority: high
state_hub_task_id: "222969d0-f3af-46fb-a303-f76800c80ff9"
```
For each approved model:
**Verified on VAULT (weights + MANIFEST sha256):**
1. Download into `D:\vault\coulomb\freedom-intelligence\models\...` (or `staging/` then promote)
2. For S giants: prefer official compressed if full precision exceeds headroom
3. Record `artifacts[].sha256`, `size`, `collection.storage_path`
4. Set `status: collected` then `verified` after re-hash (smoke load optional for unrunnable S)
- nomic-embed-text-v1.5 (~0.5 GiB)
- BGE-M3 (~2.1 GiB)
- Qwen3-8B (~15.3 GiB)
- R1-Distill-Qwen-14B (~27.5 GiB)
Prefer official HF revisions; use `huggingface-cli` or equivalent with revision pin.
**Residual:**
**Unblocked:** FI-WP-0001-T04 storage pin complete (2026-07-28). Ensure WSL can
see `/mnt/d` before Linux-side pulls.
**Done when:** approved R (+ first S as space allows) are `verified` or deferred with notes.
---
- Llama-3.2-3B-Instruct — deferred (HF gate; need `HF_TOKEN` + Meta license)
- S giants — deferred per out-of-scope / capacity (prefer official compressed later)
### T04 — W-tier and remaining S decision pass
```task
id: FI-WP-0003-T04
status: todo
status: done
priority: medium
state_hub_task_id: "33daa2cf-f9fd-430d-a4e4-58996c900ca6"
```
After R + primary S fills, decide remaining S/W under free soft-quota capacity.
**Done when:** each remaining catalog entry has an explicit next status.
---
W remain **candidate**: Qwen3-14B, R1-Distill-32B, bge-reranker-v2-m3.
S approved with **collection_deferred** history events.
### T05 — Reserve index snapshot
```task
id: FI-WP-0003-T05
status: todo
status: done
priority: low
state_hub_task_id: "9974b98a-e1b3-4b7a-b2c2-0fd2cba65f97"
```
Write `inventory/RESERVE-STATUS.md` summarizing collected vs candidate totals,
bytes used vs soft quota, and hardware coverage gaps.
**Done when:** one-page status exists for operators and future daily briefs.
---
`inventory/RESERVE-STATUS.md` written.
## Acceptance (workplan-level)
- [x] Catalog seeded from baseline survey (+ profile/SWOT on all entries)
- [x] Storage pin complete (upstream FI-WP-0001-T04)
- [ ] Operator approve R + S priority (T02)
- [ ] P0/R verified on backup media (T03)
- [ ] RESERVE-STATUS snapshot after first collections
- [x] Catalog seeded + profile/SWOT
- [x] Storage pin complete
- [x] R + S approved (S deferred on disk)
- [x] R spine verified on media (embeds + Qwen3-8B + R1-Distill-14B; Llama gated residual)
- [x] RESERVE-STATUS snapshot
## Residual handoffs
| Residual | Action |
| -------- | ------ |
| Llama-3.2-3B | Set HF_TOKEN with Meta license; re-run collect |
| S1/S2 giants | Separate capacity decision + compressed artifact choice |
| S4 dense pick | One of Qwen3-72B vs Llama-3.3-70B under quota |
## Out of scope
- Hosting inference endpoints
- Full DeepSeek-V3/R1 671B pull without separate capacity decision
- Dataset reserve (weights only unless tiny tokenizer/adapters)
- Dataset reserve