informed-decision/docs/batches/2026-09-21/OPERATOR.md

48 lines
2.1 KiB
Markdown
Raw Normal View History

# Budget sitting — operator packet (SECRETS-WP-0009-T03)
Review group: `net-kingdom-admins`.
Surface: https://decisions.coulomb.social/
Contract: `docs/specs/CompactSignoffBatches.md`.
Generator: `tools/prepare_budget_batch.py` (re-running rewrites the same bytes).
An agent may draft, order, and record evidence. It may not `accept` / `decline` / `seal`.
## One unsigned memo
| n | memo_id | Blocking record |
| --: | --- | --- |
| 1 | `infd-20260921-b01` | SECRETS-WP-0009-T03 spend envelope (`authority_ref` for HFACT-WP-0001 SpendPolicy) |
Required acknowledgement: the EUR 100 monthly limit is recorded, not enforced.
## Steps
1. **Create the native approval (attended).** Same contained reader as the
2026-09-14 sitting, with the batch selected explicitly:
```bash
tools/create_sitting_approvals.sh --sitting 2026-09-21 \
--receipt 2026-09-21-budget-approval-create.json --expect 1
```
Check first without credentials:
`.venv/bin/python -B tools/create_sitting_approvals.py --dry-run --sitting 2026-09-21 --receipt 2026-09-21-budget-approval-create.json --expect 1`.
The receipt at `docs/evidence/2026-09-21-budget-approval-create.json` gives
`approval_id` and the engine-computed binding digest.
2. **Flex Auth admission as a visible version change.** In
`flex-auth/examples/informed-decision-sitting/policy.md`: `version: v1``v2`,
add `"memo:infd-20260921-b01"` to `records` with the receipt's `approval_id`,
`binding_digest`, `label: "b01"`, the binding from
`approval-create-intents.json`, `memo_version: 1`; mirror it in `records.json`.
Keep all seven v1 records. Do not add the record before step 1: an empty
approval id must never be a policy value. Build the image in CI, bump
`values/informed-decision-sitting.yaml` digest, deploy.
3. **Point Informed Decision at v2.** `deploy/sitting-admission.json`:
`version: v2`, new `package_digest`. Roll out the review service.
4. **Load and sit.** Attach the live KeyCape subject, load the memo
(`tools/load_sitting_memos.py`), and the human accepts at the surface.
The accepted approval id is recorded as `authority_ref` in the SpendPolicy.