assembly-economics/checkpoints/PLAYBOOK.md
tegwick c0254aa2da Checkpoint executor: deterministic runner, sources, tests; definitions route to assembly-checkpoint
- checkpoints/run_checkpoint.py: window guard, web-fetcher fetch with
  provenance, record + raw JSONL, optional llm-connect assessment rejected if
  it contains numbers not in the fetched data
- checkpoints/sources.json: BTOS (US), Eurostat isoc_eb_ai (EU, DE), FRED
  info-processing investment (US); manual entries for AR, usage indices,
  sentiment, legislation
- activity definitions: label assembly-checkpoint (rein-aharness approach)
- PLAYBOOK: automated path + manual/agent path

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1494246@bnt-lap001
Assistant-Session: caf6de6f-f9e4-47ce-a584-49baa271fa4b
2026-10-12 18:45:12 +02:00

69 lines
2.7 KiB
Markdown

# Checkpoint playbook (executor instructions)
**Automated path (default).** Scheduled checkpoints run without an agent:
activity-core fires an `assembly-checkpoint-*` definition, rein-aharness
claims it (approach `assembly-checkpoint`), runs
`checkpoints/run_checkpoint.py` (data via
[web-fetcher](https://forgejo.coulomb.social/coulomb/web-fetcher), optional
llm-connect assessment with a number guard), commits only `checkpoints/`,
pushes and posts `assembly_checkpoint`. Machine-readable sources are mapped in
`checkpoints/sources.json`. Indicators marked `manual` are collected by an
agent or human at reviews, following the steps below.
**Manual / agent path.** Use the steps below for manual indicators, annual
reviews, or when the automated path fails.
You are running a **reality checkpoint** for the `assembly-economics`
repository. Work only inside this repository. Keep the run within budget:
a `light` checkpoint should take well under 15 minutes.
## Steps
1. Determine today's date in Europe/Berlin and the run kind (`light` or
`full`) from the task title.
2. Read `checkpoints/schedule.md`. If today is not inside an active window for
this kind, write `checkpoints/YYYY/YYYY-MM-DD-out-of-window.md` (one line
saying so), commit, push, post the completion event with `in_band: 0`,
and stop.
3. Read `checkpoints/README.md` (protocol) and `checkpoints/IndicatorCatalog.md`.
4. For each indicator of this kind, search for the most recent published
value. Prefer the primary source listed in the catalog. Record value,
unit, reference period, publication date and URL. If you can't find it,
record `not found` and the sources tried. Do **not** estimate or invent
values.
5. Compare with `checkpoints/predictions.md` where an entry exists.
6. Write the record using the template below, then append the observations
to `predictions.md` under the matching entries (append-only).
7. Commit with the message `Checkpoint YYYY-MM-DD (<kind>)`, then push.
8. Post the completion event (README step 7).
If something blocks you (no network, push rejected, catalog missing), still
write the record with the blocker stated, and report the failure. A recorded
failure is a valid outcome of a setup run.
## Record template
```markdown
# Checkpoint YYYY-MM-DD (<kind>)
- Model version: <from models/README.md>
- Phase: <setup | transition | steady>
- Executor: <agent / harness>
## Observations
| Indicator | Jurisdiction | Value | Unit | Reference period | Published | Source | Band position |
|---|---|---|---|---|---|---|---|
## Assessment
- <jurisdiction>: <tracks archetype / band anchor>; notable changes; surprises.
## Not found
- <indicator>: sources tried
## Follow-ups
- <intake or task suggestions, if any>
```