assembly-economics/activity-definitions/assembly-checkpoint.declaration.yaml

85 lines
3.9 KiB
YAML

# Owner declaration — assembly-checkpoint-* (ASSEMBLY-WP-0014-T01)
#
# Answers glas-harness GLAS-WP-0017-T02 (grant-shape confirmation) and rein-aharness
# REINAH-WP-0003-T04 / legacy-runtime-inventory step 2. Shape copied from the FI template
# (freedom-intelligence/activity-definitions/fi-daily-research-brief.declaration.yaml).
# This file is assembly-economics' authority over WHAT runs and under WHICH grant. It does not
# schedule (activity-core), pick a sandbox (glas-harness) or execute and publish (rein-aharness).
# Human-readable version and founder approval: checkpoints/EXECUTION_DECLARATION.md (approved
# 2026-10-13), addendum in docs/decisions/2026-10-12-checkpoint-origin-publication.md.
declaration_version: "1"
definition_ids:
- assembly-checkpoint-setup-daily # until 2026-12-31
- assembly-checkpoint-monthly-2026 # until 2026-12-31
- assembly-checkpoint-quarterly
- assembly-checkpoint-annual
owner: assembly-economics
approved_by: Bernd Worsch
approved_at: "2026-10-13"
status: proposed # -> active at cutover to the governed route (target: December monthly run)
execution:
shape: blueprint # operator decision 2026-10-13, hub decision 0636c577: tenant-owned blueprint
harness_profile_ref: none # no Glas profile unless the assessment becomes an agent loop
steps:
- deterministic: python3 checkpoints/run_checkpoint.py --kind {kind} --date {date}
- bounded_model_call: one llm-connect request inside run_checkpoint.py (assessment); numbers
not present in the fetched data are rejected; --no-llm yields a valid record
selection: explicit definition id only. No label or approach_hint routing after cutover.
inputs:
kind: {type: enum, values: [light, full], source: definition}
date: {type: date, tz: Europe/Berlin, source: activity-core due item (context.item.date)}
repositories:
- coulomb/assembly-economics at a verified Forgejo commit (main)
- coulomb/web-fetcher at a verified Forgejo commit (main)
code: checkpoints/run_checkpoint.py and web_fetcher (standard library only; no package install)
network:
egress_hosts: # from checkpoints/sources.json, plus the llm-connect endpoint
- www.census.gov
- ec.europa.eu
- fred.stlouisfed.org
- ghoapi.azureedge.net
- api.worldbank.org
- api.openalex.org
secrets: none for data sources (all public). llm-connect per its own route. The push credential
belongs to the publisher, never to the run.
outputs:
artifacts:
- checkpoints/{yyyy}/{date}-{kind}.md
- checkpoints/data/{date}-{kind}.jsonl
out_of_window: successful no-op (JSON summary status "out-of-window"), no commit
repository_grant:
version: "2"
allowed_paths:
- checkpoints/**
commit_count: {min: 0, max: 1} # 0 for out-of-window days
publication:
remote: origin
ref: main
mode: fast-forward-only
rebase_retries: 1 # only if every unpublished commit stays within allowed_paths
force: never
decision: docs/decisions/2026-10-12-checkpoint-origin-publication.md
commit_message: "Checkpoint {date} ({kind}) — activity-core"
completion:
event: assembly_checkpoint
required_detail:
repo: assembly-economics
date: inputs.date
kind: inputs.kind
path: outputs.artifacts[0]
pushed: true (or status out-of-window)
on_failure: executor_run ok=false, no assembly_checkpoint event; the next scheduled run is
unaffected. Source failures are not run failures (recorded as not_found / error rows).
rollback:
pins:
- this declaration and the four definitions, by git revision in this repo
procedure: revert the checkpoint commit (records are append-only by convention, so a revert is
visible), or set enabled false in the definition and sync activity-core definitions.
Until the legacy expiry (2026-12-31) the compatibility route (rein-aharness approach
assembly-checkpoint, 06bd08c) remains available.