Skip to content

Record the operator's correction decisions; put the FAO half to them formally - #207

Merged
Polichinel merged 2 commits into
developmentfrom
docs/correction-contacts
Aug 2, 2026
Merged

Record the operator's correction decisions; put the FAO half to them formally#207
Polichinel merged 2 commits into
developmentfrom
docs/correction-contacts

Conversation

@Polichinel

Copy link
Copy Markdown
Collaborator

Follow-up to #206 (S8). The operator answered the two questions S8 surfaced — one fully, one partially.

Decided

Who notifies: Simon Polichinel von der Maase, direct email, as soon as the scope of the error is established. Not an automated alert — a correction needs judgement about scope and impact that a machine message cannot carry.

Treatment of a bad delivery: withdrawal is the intended policy.

The gap that now has to be visible

Intended: withdrawal. Implemented: supersession.

Supersession is in force because it is what the wire does, not because it was chosen — and it is the option we are not recommending. Withdrawal has no mechanism: an ADR-013 amendment plus matching views-faoapi work.

The procedure states this in the section an operator reads at 22:00. Believing a bad delivery becomes unretrievable when it does not is worse than knowing it stays.

Put to FAO formally

Pre-Release Note 07, Topic B — two decision points in the series' house style, plus a table of interim defaults marked as placeholders rather than policy:

  • B.1 — are Anna Belli and Flavio Bellomi the right recipients, is there an expected notification period, and is notification expected for every correction or only material ones? A named individual on leave is a single point of failure in exactly the situation where delay is costly.
  • B.2 — withdrawal or supersession, and specifically whether FAO has an audit or reproducibility requirement that depends on a previously served forecast staying retrievable. That answer decides whether the amendment is worth building.

Compiles clean, 8 pages.

One thing I changed on my own judgement — flagging it

This repository is public. I put the contacts in the pre-release note (which goes to the FAO, where naming them is appropriate) and not in the repo.

Naming a responsible person on our side is one thing. Publishing an external organisation's individual email addresses to a public GitHub repo as a side effect of documenting a runbook is another, and not something to do by default. The repo doc names Simon and points at the project materials.

tests/test_doc_accuracy.py now refuses @fao.org anywhere in the repo. Mutation-proven:

partner contact addresses appear in this public repository:
  ['docs/operations/correction_procedure.md:184']

If you want the addresses in the repo, say so and I will remove that guard — it is your call, not mine.

The guard fired on this change, as designed

S8's test asserted the document said "not decided", with a docstring instructing whoever removed that marker to replace it with the decision. That is exactly what happened. Its replacement guards the subtler failure: a half-answered question quietly becoming a whole answer, so the outstanding half stops being asked.

Verification

ruff check .                                # clean
pytest -q                                   # 307 passed, 3 skipped, 41 xfailed, 5 known pyarrow
pytest -q tests/test_doc_accuracy.py        # 15 passed
grep -rn "@fao.org" .                       # 0

🤖 Generated with Claude Code

Polichinel and others added 2 commits August 2, 2026 12:02
…lf to them formally

Simon Polichinel von der Maase is responsible for contacting the FAO when a
delivery is found wrong — direct email, not an automated alert, as soon as the
scope is established rather than after a correction is prepared.

The intended treatment of a bad delivery is WITHDRAWAL. What is implemented is
SUPERSESSION, and the procedure now states that gap in the section an operator
reads at 22:00, because believing a bad delivery becomes unretrievable when it
does not is worse than knowing it stays. Withdrawal has no wire mechanism: it
needs an ADR-013 amendment and matching views-faoapi work, and whether that is
worth building depends on FAO's answer about audit requirements.

Both are put to FAO as Pre-Release Note 07 Topic B, with a table of the interim
defaults marked as placeholders rather than policy — including the one that is
the option we are NOT recommending.

Recipients are deliberately not in this repository. It is public. Naming a
responsible person on our side is one thing; publishing an external
organisation's individual email addresses to a public repo as a side effect of
documenting a runbook is another. The contacts live in the FAO-02 project
materials. tests/test_doc_accuracy.py now refuses @fao.org anywhere in the repo,
mutation-proven.

The doc-accuracy guard fired on this change, which is what it was written for: it
required that removing the "not decided" marker be accompanied by the decision.
Its replacement guards the subtler failure — a half-answered question quietly
becoming a whole answer, so the outstanding half stops being asked.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…uard

Third instance in this epic of a guard catching the prose that explains it, after
S3's retired contract name and S5's ledger-schema docstring. The fix is the same
each time: name the thing without spelling it.

Worth keeping the note rather than silently rewording, because the alternative
each time was to weaken the guard, and three times would have made it worthless.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Polichinel
Polichinel merged commit 157cc06 into development Aug 2, 2026
4 checks passed
@Polichinel
Polichinel deleted the docs/correction-contacts branch August 2, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant