Where
Driver loop (driver)
Commit
bb31393, and every commit before it.
OS, architecture and ClickHouse version
macOS 15 arm64, ClickHouse 26.8.2.7.
What happened
No command compares a tic past the first refused one, and none can be asked to.
native diff, native demo and native play all stop there, so on a branch
whose first refusal is tic R, every tic after R is invisible to every
instrument the project has. Not hidden behind a flag; there is no flag.
The span is therefore inspected exactly once, by whoever moves the refusal past
it, as a side effect of unrelated work. #517 moved demo3's first refused tic
from 181 to 210 while adding two attack routines, and that is what first
exposed tics 181 to 209 to comparison at all. A real divergence was sitting in
them, at tic 206, already filed as #502.
So the span grows quietly while nobody can look at it, and whether anyone does
depends on which change happens to move the refusal. That is not a review
process.
#534 is the neighbouring defect and is narrower: a refusal suppressed the
comparison of the tics before it, which #539 fixes. This is the tics after
it, which #539 does not address and which no amount of reporting can, because
the rows do not exist: the run stops.
What you expected instead
Something that can compare a span behind a refusal, so that the tics after R
are reachable deliberately rather than by accident.
A run that continued past the refused tic would need its rows treated as
untrustworthy from R on, since the state feeding them is one the statement could
not produce, so the simplest form is probably not "keep going" but "start from
the probe's own row at tic N and run forwards", which is how #502 was
reproduced by hand. That gives a comparable span behind any refusal without
asking the simulation to carry a state it got wrong. Whether that belongs in
native diff as a flag, or as a separate command, is a design question rather
than a preference of mine.
Reproduction
# On any tree whose first refused tic is R, no invocation compares R+1.
clickdoom native diff 2134 --probe <trace> # stops at R, exit 3
clickdoom native demo demo3 --from sim # stops at R
clickdoom native play # stops at R
Output
$ clickdoom native diff 215 --probe refemu/reference_traces/demo3/probe.9a6a47d01119.tsv
# native diff elapsed=55.4s tics=213 tics/s=3.8
clickdoom: error: tic 210 unresolved: PL_ACTION_NEEDED
exit=3
The run produced rows for 213 tics. Tics 211 to 213 exist in native_state and
are not compared by this or any other command, and nothing reports that they
were skipped.
Where
Driver loop (driver)
Commit
bb31393, and every commit before it.OS, architecture and ClickHouse version
macOS 15 arm64, ClickHouse 26.8.2.7.
What happened
No command compares a tic past the first refused one, and none can be asked to.
native diff,native demoandnative playall stop there, so on a branchwhose first refusal is tic R, every tic after R is invisible to every
instrument the project has. Not hidden behind a flag; there is no flag.
The span is therefore inspected exactly once, by whoever moves the refusal past
it, as a side effect of unrelated work. #517 moved demo3's first refused tic
from 181 to 210 while adding two attack routines, and that is what first
exposed tics 181 to 209 to comparison at all. A real divergence was sitting in
them, at tic 206, already filed as #502.
So the span grows quietly while nobody can look at it, and whether anyone does
depends on which change happens to move the refusal. That is not a review
process.
#534 is the neighbouring defect and is narrower: a refusal suppressed the
comparison of the tics before it, which #539 fixes. This is the tics after
it, which #539 does not address and which no amount of reporting can, because
the rows do not exist: the run stops.
What you expected instead
Something that can compare a span behind a refusal, so that the tics after R
are reachable deliberately rather than by accident.
A run that continued past the refused tic would need its rows treated as
untrustworthy from R on, since the state feeding them is one the statement could
not produce, so the simplest form is probably not "keep going" but "start from
the probe's own row at tic N and run forwards", which is how #502 was
reproduced by hand. That gives a comparable span behind any refusal without
asking the simulation to carry a state it got wrong. Whether that belongs in
native diffas a flag, or as a separate command, is a design question ratherthan a preference of mine.
Reproduction
Output
The run produced rows for 213 tics. Tics 211 to 213 exist in
native_stateandare not compared by this or any other command, and nothing reports that they
were skipped.