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
This commit is contained in:
tegwick 2026-09-22 12:00:59 +02:00
parent 7009521fdc
commit 5c5c298643
8 changed files with 396 additions and 4 deletions

View file

@ -0,0 +1,113 @@
# 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)

View file

@ -65,5 +65,9 @@ action:
5. [x] Executor: `rein-aharness fi-research-brief` + `scripts/railiance-rhythm/`
(install on railiance01; not workstation cron)
Migration (FI-WP-0005): the owner declaration for the profiled replacement is
`fi-daily-research-brief.declaration.yaml` (status `proposed`). This definition
stays on the compatibility route until the T08 cutover.
Layers: activity-core (when/what/where) → rein-aharness (execute) → this repo.
See `docs/recurrence-ops.md` and `activity-core/docs/recurring-automations-playbook.md`.