freedom-intelligence/activity-definitions/fi-daily-research-brief.declaration.yaml
tegwick 5c5c298643 FI-WP-0005 T01-T03: owner declaration, publication decision, egress hosts.
- Owner declaration for the profiled fi-daily-research-brief (proposed):
  inputs, single-commit briefs/** grant, fast-forward-only publication,
  quality rules, model requirements without env selection, completion
  evidence and rollback pins.
- Decision: origin publication is a typed grant on the run, not an
  executor default.
- docs/sources-egress.yaml: 17 exact host:443 entries for the sandbox,
  tested for sand-boxer format and drift against the prose allowlist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 51320@bnt-lap001
Assistant-Session: 9d40b4c7-8e3c-42ee-b755-d658d4640d6c
2026-09-22 12:00:59 +02:00

113 lines
5.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)