**The release rules stop living in one session's head.** Everything this week's work learned the
hard way is now a guidance page, `releasing.md`, rendered at
[`/backoffice/guidance/releasing.html`](../newsroom/guidance/releasing.html) and linked from
`.claude/ONBOARDING.md` — which is the file a session is pointed at on startup, and therefore the
only place a lesson reliably reaches the next agent.

**Which component is the minor, stated once and for good.** The version is
`v<release>.<major>.<minor>` and **the minor is the third**. Every push to `dev` is a minor release,
so a normal one goes `v0.23.0 → v0.23.1`. CI is the authority and agrees: its tag job computes
`NEXT_MINOR` as the third component plus one and rejects anything that is neither that nor a
deliberate major. **`build/before_push.py` advises the major and is wrong about it** — it is
reliable for whether a number is taken, not for which to take. That disagreement is now written
down, in the guidance and in the onboarding file, instead of being rediscovered by whoever releases
next.

**And the three other things that fail quietly.** Install `requirements.txt` first: without
`pycryptodomex` an AES-encrypted diploma from the gazette reads as zero characters and is reported
as *«provavelmente um PDF digitalizado»*, a false statement about somebody else's document; without
`jsonschema` a research delivery is not validated at all. Both leave every gate green. How to run
the browser gate in a container that has no Playwright, with the exact commands, since installing it
into the repository turns the site gate red. And the two merge commands that delete work without
raising a conflict — `git checkout --theirs` over the unmerged list, which overwrites resolutions
written to disk but not staged, and a clean auto-merge, after which you grep your own changes back
one at a time.

**The editor gets interviewed too.** `briefs/pack/10__entrevista-ao-editor/` is `09__entrevistas/`
pointed the other way: instead of an assistant interviewing somebody outside the newsroom for
material, an agent has ChatGPT interview the **editor of record** for direction — what to work on,
what to drop, what he thinks matters. An agent knows what it has in front of it and does not know
what the editor thinks is important; that information exists and today only surfaces when he
remembers to write it down.

**The part that makes it worth twenty minutes is that the agent reads itself first.** Before there
is any interview, the agent runs the preparation prompt over its own `ROLE.md`, `MANDATE.md`, open
and blocked issues, unread mail, run records, and the release notes describing defects in its own
domain — *an agent that does not know what it broke repeats it*. Out of that comes a state block
carrying its real open questions, each with **its own proposal**. The difference between *"what
should I do next?"* and *"issue 006 has been stalled three days waiting on a PDF I cannot find; I
see three routes and I would take the third"* is the difference between a polite conversation and a
decision in ten seconds.

**Decisions and ideas come back in separate sections, and are treated differently.** A decision
becomes a file, with the editor's reason quoted verbatim, because the reason is what lets the next
similar case be decided without asking again. An idea opens an issue in `proposto` and **nobody
starts it** — *an idea treated as an order is how an agent does work nobody asked for*. Anything the
editor asserts about the world is a lead to verify like any other; his saying a name is not a
source. And nothing said aloud to a model puts a story into `publicado`, widens the folder an agent
may write in, or excuses a gate.

**Both packs render on one page.** `/redacao/entrevistas/` now carries eight prompts in two groups,
each from its markdown source, still under gate 42 — which was written for one pack and covers the
second without a change, because it checks the relationship and not the list.
