# ADR 0263: A fix to an entrypoint names what it touches

> Source: https://github.com/max-listov/stitchkit/blob/master/docs/decisions/0263-a-fix-to-an-entrypoint-names-the-entrypoint-it-touches.md

---

# ADR 0263 — A fix to an entrypoint names what it touches

**Invariants:** I13, I14.

## Context

`stitchkit upgrade` told a project which breaking items touched its imports and said
nothing about fixes. Five behavioural fixes to one process runner shipped in ten days;
a consuming project found them by reading three screens of changelog. Whether a fix
reaches a project is the same question as whether a break does.

## Decision

A `### Fixed` item of the framework changelog that leads with a backticked public
entrypoint is a fix to that entrypoint and carries the `**Affects:**` line of a breaking
item: export names, or `behaviour` for a change no import name reveals. `*` is refused
there, since a fix removes nothing. An item that does not lead with an entrypoint
(tooling, CI, documents) may carry the line and does not have to. `release:check`
refuses a release after 0.110.6 that breaks the rule. A behaviour change filed under
`### Changed` is outside it.

`stitchkit upgrade` prints a "Fixes that touch this project" section with the same
verdicts as breaking items (`affects this project` with `path:line`, `not used here`,
`behavioural — check by hand`). A fix that carries no line, such as one released before the
rule, is only counted. A test reads every `Affects` line of the real changelog, so one typo cannot
break the command for a consumer whose range crosses it.

## Consequences

A consumer sees at once which fixes reach it and can decide whether a release of its
own is needed. The author names the touched exports at release time, when the answer is
known, in the same line the breaking items use.
