-
released this
2026-08-02 17:23:32 -05:00 | 222 commits to main since this releaseEvery log line is now attributed to a phase, in Portainer's
callerfield —
the fourth of the five keys the dashboard colours, and the one 0.10.2 named but
left unused.Phase tags
The two halves of a window run concurrently by design, so their lines
interleave. Until now the only way to tell which crawl a line came from was to
recognise its wording, and the only way to tell a classic failure from a ranked
one was aqueue=pair at the far end of the line. Portainer printscaller
before the message and colours it distinctly, so it reads as a column:2026-08-03 02:14:07 INF riot/crawl > crawl complete | rows=7478 2026-08-03 02:41:22 WRN counters/classic > coverage below floor | coverage=0.87The vocabulary is
riot/{crawl,damage,benchmarks},opgg/{http,universe},
counters/{ranked,classic}andrunes/{ranked,classic}.Two segments, always. Portainer renders
calleras the last two
slash-separated segments — the field is meant for a Gopkg/file.go— so a
third is dropped silently, which would makeopgg/counters/classicand
riot/counters/classicarrive identical. The list is closed (PHASESin
logger.ts) so that holds by construction and a typo is a type error rather
than a tag that quietly never appears.countersandrunessplit by queue rather than by half because that is the
axis that actually distinguishes their lines — both run on the op.gg half. The
shared HTTP client keeps its ownopgg/httptag rather than borrowing whichever
crawl was using it: one instance serves the universe, counters and runes crawls
of a pass, so attributing its retry warnings to any single phase would be a
guess.The boot banner
It now reports the config it was silently omitting:
runOnStart,classic,
the op.gg query band (region/tier/queue), the op.gg pacing interval, and the
per-artifact time caps.classicis what motivated this. It is the only opt-in artifact flag, and there
was no way to tell from the outside whether the pass had run — an unset
CLASSIC_ENABLEDlooks exactly like a pass that ran and published nothing.
runOnStartis the reason a container that "did nothing" may in fact have
crawled the moment it booted, outside the window. The query band decides which
population every op.gg artifact describes, and three artifacts describing three
different populations is a failure with no error attached to it.It is also three lines now —
config/build,config/riot,config/opgg—
because the single line wrapped to four in the viewer where it is read, and at
that width the wrap lands mid-field. The split follows the service's own shape:
the process and its destinations, then one line per half.Local window times
nextanddeadlinewere the last clocks still rendering as
2026-08-01T07:00:00.000Z, sitting beside a local timestamp with nothing on the
line to say the two were five hours apart by definition rather than by elapsed
time.schedule.tsdoes all its arithmetic in local time off the container's
TZ, so a UTC field was the one value that had to be converted before it could
be checked againstCRAWL_START_HOUR— and being five hours out is exactly what
aTZmisconfiguration looks like.nextnow reads2026-08-03 02:00:00
against awindow=02:00-05:00on the line above it.The
sv-SEformatting 0.10.2 inlined into pino'stimestampis now the exported
localTime, so the timestamp and the fields beside it cannot drift apart.
Minor rather than patch for the added boot output and the new
callerfield,
though this remains confined to the dashboard: no artifact, schema, or published
file changes.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)