Track guessed as B from the FAILING STEP — line 1 of 2,
stable_linux_amd64/default/pinned --mimic-fpc -Fuexternal/synapse -Fulib/rtl -Fulib/rtl/platform/posix test/lib_synapse., which namestest/lib_synapse.pas. Not from the job's name or itssrc: those describe what the job is ABOUT, and this job's recipe spans 2 source file(s). The ranker reads frontmatter, so this line — not the body — decides who works it; correct it if the guess is wrong.
This commit CANNOT be the cause. The job builds only with
$(PXX_STABLE), and this commit moved nostable_linux_amd64/**— so the bytes that compiled it are unchanged. Look at flakiness or box load, not at the named sha; the bisect is unsound here and has been skipped.
origin/master has advanced 7 commit(s) since this sha. Re-verify at current HEAD before acting — the callback is tagged to the sha that was tested, which may no longer be the state of the tree.
regression: lib-test#src:test/lib_synapse.pas at fca28056d8ec in step 1/2, stable_linux_amd64/default/pinned --mimic-fpc -Fuexternal/synapse -Fulib/rtl -Fulib/rtl/platform/posix test/lib_synapse… (auto-filed by twatch)
- Type: regression (auto-filed by Track T watcher, host seven, twatch
0c5ad13167ab). Untriaged. - Found: 2026-09-09T16:32:30Z
- Test source: test/lib_synapse.pas tools/expect_same.sh
- Failing step: line 1 of 2 of the job's recipe; it names
test/lib_synapse.pas.stable_linux_amd64/default/pinned --mimic-fpc -Fuexternal/synapse -Fulib/rtl -Fulib/rtl/platform/posix test/lib_synapse.pas /tmp/lib_synapse
Repro
tools/testmgr.py --tier full --job 'lib-test#src:test/lib_synapse.pas' at fca28056d8ec2483d3a9a1b0f064842164f92b46
Range
The named sha
fca28056d8ecCANNOT be the cause — it touches no buildable file (docs / tickets / tstate only). It is the sha that was TESTED, i.e. the upper bound of an untested range; the cause is somewhere below it.
bad fca28056d8ec, last good 0e3ba86d5208, 4 observable commit(s) in range (it builds with $(PXX_STABLE), so compiler/ commits cannot have caused it and are dropped; pin moves, lib/ and test/ are kept) — the watcher narrows this by idle bisect.
Log tail
pascal26:2039: error: undefined variable (SetString)
pascal26:2077: error: undefined variable (SetString)
pascal26:2178: error: undefined variable (SetString)
(tail)
pascal26:2039: error: undefined variable (SetString)
in: external/synapse/synautil.pas
near: ( var APtr : PANSIChar ; >>> AEtx : PANSIChar
pascal26:2077: error: undefined variable (SetString)
in: external/synapse/synautil.pas
near: do begin SearchForLineBreak ( APtr , >>> AEtx , bol
pascal26:2178: error: undefined variable (SetString)
in: external/synapse/synautil.pas
near: <= AEtx ) and ( SynaFpc >>> . strlcomp (
Stub ticket: signal only. Track T agent (face 2) enriches or a dev track takes it from the repro line.
- 2026-09-11 — resolved; this names the commit that carried the resolve, which is not always the one that carried the change — commit cead35240.
2026-09-11 (frankS) — real, mine, fixed at 8887170da
CAUSE. 0ffe185bb moved six System names out of lib/rtl/sysutils.pas into
compiler/builtin/builtin.pas. This job builds with $(PXX_STABLE) — the PINNED
compiler plus a FROZEN copy of compiler/builtin/ that predates the move — so
the name is gone from the only two places such a build can look. For lib_synapse the names
are SetString, in external/synapse/synautil.pas.
FIX. All six restored in lib/rtl/sysutils.pas as a deliberate duplicate of
builtin's copies, with a retirement test written on the sLineBreak note (grep
the name in stable_linux_amd64/default/builtin/builtin.pas; delete the sysutils
copy when it is there). Verified positive-control first, in place: revert
sysutils.pas to origin/master and this job's own recipe reproduces the error in
the log tail above; apply the fix and it prints its eight expected rows (b64=SGVsbG8sIFdvcmxkIQ== through cli-got=pong).
THE BANNER AT THE TOP OF THIS TICKET SAID THE OPPOSITE, AND IT IS WORTH A
SENTENCE. "This commit CANNOT be the cause ... Look at flakiness or box load"
is TRUE about the named sha fca28056d8ec (a tstate publish, docs only) and
WRONG as advice, because this job reads live lib/** and the untested range
below the named sha held four observable commits — one of which is the cause. The
ticket's own Range section said so correctly thirty lines further down ("the
cause is somewhere below it", "4 observable commit(s)"), so the ticket
contradicted itself and the contradiction was in the half a reader sees first.
Reworded in tools/twatch.py at HEAD to stop at the exculpation and hand the
residual question to the Range section, which already carries the
range_non_causal case for when the answer genuinely is the box.