freedom-intelligence/activity-definitions/fi-daily-research-brief.declaration.yaml

114 lines
5.1 KiB
YAML
Raw Normal View History

# Owner declaration — fi-daily-research-brief (FI-WP-0005-T01)
#
# Answers rein-aharness d0b45acb / REINAH-WP-0003-T04: the owner-approved
# replacement for the profile-absent `fi-research-brief` route. This file is
# FI's authority over WHAT runs and under WHICH grant. It does not schedule
# (activity-core), pick a rein/sandbox/model (glas-harness) or execute
# (rein-aharness). Where another layer has not shipped the needed piece yet,
# the field names the FI-WP-0005 task that tracks it.
declaration_version: "1"
definition_id: fi-daily-research-brief
owner: freedom-intelligence
approved_by: Bernd Worsch
approved_at: "2026-09-22"
status: proposed # -> active at FI-WP-0005-T08 cutover
execution:
shape: agent # operator decision 2026-09-22 (option B)
harness_profile_ref: harness.fi-research-brief@1.0.0 # requested, FI-WP-0005-T05; not yet in the Glas catalog
selection: harness_profile_ref only. No label or approach_hint routing, no
fallback to the compatibility executor once cut over.
inputs:
# Read from the checked-out workspace at the run's base commit.
brief_date:
type: date
tz: Europe/Berlin
source: activity-core due item (context.item.date)
repository_files:
- docs/sources-allowlist.md
- docs/daily-brief-playbook.md
- briefs/_template.md
- inventory/RESERVE-STATUS.md
- research/2026-07-24-baseline-field-survey.md
- research/2026-07-24-nas-strategic-collection-plan.md
repository_globs:
- inventory/catalog/*.yaml # authority for sizes, licenses, collection status
prior_briefs:
names: last 5 by date, excluding brief_date
full_text: most recent 1
git_log: last 12 commits, oneline
network:
egress_hosts: docs/sources-egress.yaml # FI-WP-0005-T03; model route is profile-owned
secrets: none. The run reads no FI credential. Model credentials stay with
the profile's owner route (Glas / sand-boxer).
outputs:
artifact: briefs/{yyyy}/{mm}/{date}.md
format: briefs/_template.md, axes AD, collection-candidate section
exactly_one_new_file: true
must_not_modify_existing_files: true
repository_grant:
# Grant v1 fields (activity-core RepositoryGrant). v1 rejects publish=true,
# so publication rides on grant v2 (FI-WP-0005-T04).
version: "2" # requested; v1 shape below validated against activity-core b63131e+
allowed_paths:
- briefs/**
commit_count: {min: 1, max: 1}
publication:
remote: origin
ref: main
mode: fast-forward-only
decision: docs/decisions/2026-09-22-brief-origin-publication.md
commit_message: "FI daily research brief {date}"
quality_rules:
# Acceptance for canary comparison (FI-WP-0005-T07) and prompt contract.
- inventory/catalog is the authority. Do not re-announce cataloged models
as new, and never state sizes or licenses that contradict the catalog.
- Every parameter count, size, price or benchmark claim cites a primary
source that was fetched in this run. If it is not verifiable, say so
instead of estimating.
- Deltas only, measured against prior briefs and the baseline, not a resurvey.
- Cover axes AD, or state explicitly that an axis had no delta.
- Rumor (social media, unsourced aggregators) is not reported as confirmed.
- No credentials, customer data or model weights in the brief.
model:
# FI states requirements; the Glas profile pins provider/model/route.
model_class: frontier
required_capabilities: [tool_use, web_fetch_via_https_proxy, long_context]
limits_hint: {timeout_seconds: 1800, max_turns: 60}
constraints:
- No Binky-named variables (BRIEF_DAILY_MODEL, MAIL_TRIAGE_MODEL) and no
process-environment model selection. The profile version is the only selector.
- The playbook rule "no Claude Code / Codex on railiance01" means no
host-installed agent. A pinned agent executable inside the Glas sandbox is
acceptable only if the profile owner confirms it is not a host
installation. Operator to confirm (FI-WP-0005-T05).
completion:
event: fi_daily_brief
required_detail:
date: brief_date
path: outputs.artifact
pushed: true
origin_sha: 40-hex commit on origin/main that contains the artifact
harness_profile_ref: execution.harness_profile_ref
due_resolution: published-artifact resolver (FI-WP-0005-T04). The day
clears only if the artifact is on origin/main AND the event says
pushed=true. In the interim, fi_brief_status (activity-core 289aff3), same semantics.
on_failure: executor_run ok=false, no fi_daily_brief, day stays due.
independent_audit: scripts/verify_brief_durability.py --require-date {date}
rollback:
pins:
- glas profile version (previous harness.fi-research-brief@x.y.z)
- this declaration and the definition, by git revision in this repo
procedure: pin the previous profile version or revert the definition
revision, then sync activity-core definitions. Until the legacy expiry
(2026-12-31) the compatibility executor rein-aharness@11020e8 remains a
manual one-shot recovery. There is no host timer (FI-WP-0005-T06).
evidence_required: one exercised rollback at cutover (FI-WP-0005-T08)