This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

The away mode's stop check reads the forge once, as its documented meaning

adrproposedadr-2610181003541997

Context

Brief invariant 7 says abcd asks the network nothing on its own: implicit checks read disk only, and a fetch happens only when the user invokes a verb or flag whose documented meaning is that fetch (adr-38). The stop check of itd-2610180912189125 runs from the host's Stop hook at every turn's end, which no one invokes by name.

Two of the four kinds of owed work live only on the forge: whether a session's own pull request is behind its base or failing its checks, and whether one carries a reservation's work. Plan review round 2 showed that the disk cannot answer the first in the night: the last-fetched default branch is stale, so a pull request that fell behind after the last fetch never reads as behind (blocker 2, dcn-2610181003464379). The drain's own reads of the remote were written into invariant 7 the same way, as the documented meaning of its verb.

Decision

We will treat setting the away mode (abcd mode autonomous, which the person runs or asks a session to run, and which grants no push rights, dcn-2610181016510153) as invoking the stop check's forge read while the mode holds: at most one pull-request listing per check (head and base branch, author, body, merge state, review decision and check rollup, at most 200 pull requests), under a ten-second deadline. When the person's forge login is known (the holder name reservations resolve without a network read), the listing covers every open pull request in the repository, not only the person's: the reader needs other people's pull requests to tell a branch whose open pull request another person authored from the session's own, and to leave it out. When the login is unknown, the listing asks for the person's own pull requests alone (--author @me) and that rule is not applied. There is no cache, so a run of eight blocks costs up to eight listings, each bounded by the deadline; a reuse cache is remaining work of itd-2610170638184486 (dcn-2610181017056307).

We will keep the check disk-only whenever the away mode does not hold: no turn's end while the person is present touches the network.

We will name a failed or late read, never hide it: the check fails open to the disk kinds alone, with the pull requests named as not read. A branch with a pull request is then compared on disk with the last-fetched default branch, naming the fetch time, and a reservation is never reported as uncarried, so a failed read cannot lead a session to open a duplicate pull request (plan review round 3).

We will add this listing to invariant 7 as the away mode's documented meaning, beside the drain's.

Alternatives Considered

  • Disk only, always. Keeps invariant 7 untouched. Rejected: "behind" is then measured against a default branch nothing refreshes overnight, and a reservation's carrying pull request cannot be seen, so the stall the slice fixes (iss-2610170619247185) recurs on exactly the pull requests that fell behind in the night.
  • A fetch of the default branch at each check. Answers "behind" from disk after a fetch. Rejected: it is a network read all the same, it still cannot see checks, reviews or links, and it would run while the person is present unless also confined to the away mode.
  • One listing per check while away, chosen. One call, bounded in time, and only inside a window the person opened.

Consequences

  • Invariant 7 gains a third verb-scoped meaning; the zero-network test harness must show the present-mode check makes no forge call (TestPresentReadsDiskOnly).
  • The forge client must be signed in for the away check to read pull requests; when it is not, the check says so and judges from disk, which the intent's scope conditions already name.
  • A later intent that wants the forge read while the person is present needs its own amendment; this record does not cover it.

Frontmatter

idadr-2610181003541997
typeadr
statusproposed
date2026-10-18

References2

Referenced by1

mentions7