← board

The wall

pascal26:66: error: undefined variable (IsATTY)
  in: /home/neo/src/fpc-trunk/compiler/comptty.pas
  near: begin LinuxIsATTY := termio . IsATTY >>> ( t )

Reached 2026-09-11 by [[feature-b-sysutils-has-no-executeprocess-and-no-texecuteflags]] clearing cfileutl.pas:136 unknown type: TExecuteFlags.

The slug and title were wrong, and how

Filed from a grep -rn IsATTY lib/rtl/ that came back empty. That grep is correct and the sentence written from it was not: it establishes that the FUNCTION is absent and says nothing about the UNIT, which has existed since the synapse work. The title asserted the wider of the two. This is the quantifier failure CLAUDE.md names — the checked half lending its credibility to the unchecked half — and it was caught one command later, by looking at the file before editing it rather than after.

The slug stays because 70220c6f4, the resolved ExecuteProcess ticket and umbrella-pxx-compiles-fpc-itself all cite it; renaming would strand those for no gain on a ticket that is being closed in the same breath.

It is ONE wall, not two

rgobj and aasmbase both report it and both report comptty.pas:66. Same line, same file, reached through a shared dependency.

Resolved 2026-09-11 (frankH, Track B)

lib/rtl/termio.pas grows both of fpc's overloads, returning Integer to match cint. Neither holds any knowledge of its own: both call __pxx_isatty in pxxcio.pas, which IS the TCGETS ioctl. Reusing it rather than reimplementing is the point — a second copy of "what makes something a terminal" is how the two answers drift apart, and pxxcio's comment already carries the reasoning.

Corpus

rgobj and aasmbase both move past comptty.pas:66 and both now stop at comphook.pas:251 undefined variable (V_Status) — the same line as each other again. That one is NOT an RTL gap: V_Status is declared inside the corpus at globals.pas:149 as $2000.

CORRECTED 2026-09-11, SAME EVENING. This section first said V_Status was the already-filed unit-cycle bug. It is not. That ticket (bug-p-a-unit-cycle-closed-through-an-implementation-uses-cannot-see-the-other-interface) is status: done — fixed by d52831ed7 + 6e8a821db, both ancestors of origin/master — and its shape passes: a minimal A/B cycle prints fpc's 8192. I matched a SLUG to a symptom without opening the ticket, and wrote the wrong attribution into two commit messages (d57a1efaa, e1c789fd0) before checking. The real defect is filed as [[bug-p-a-units-interface-constants-are-invisible-to-a-second-units-implementation-uses]] with four reductions that do NOT reproduce it recorded, since those are the expensive part to rediscover.

Verification

Log