You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Delivery header: the as-of line repeats its own time on a partial day, and the CI share disagrees with the chart beside it #1244
Found while reviewing #1221 at 166418c1e4f4814ac31c1241e14fe5a5c529583f. Both items are cosmetic, the PASS at that tip recorded them as non-blocking, and both stay invisible until #1222 supplies metrics.daily. Filed so they are tracked once the pull request leaves the queue page.
1. The as-of line says its time twice on a partial day
core/src/client/delivery-view.js:296-298 prints t('as of {time}', ...) and then, while today is still running, appends t('today is partial · as of {time}', ...) — whose own text already carries the time:
en: as of 05:30 · today is partial · as of 05:30
zh: 截至 05:30 · 今天为部分日 · 截至 05:30
Fix shape: a source string without the second as of (for example today is partial), or drop the standalone time whenever the partial hint is shown.
2. The header's CI share and its own line disagree when nothing counted
core/src/client/delivery-view.js:135 (share()) reads counted only, so a day with counted: 0 prints —.
core/src/client/delivery-chart.js:44-49 (dayValue) falls back to total when counted is 0, so the same day still draws a dot.
A day with counted: 0, total: 5 therefore shows — in the row and a point on the line. Either the chart draws nothing when counted === 0, or the row prints the failed / total share the chart used.
Reproduce
metricRows() and chartGeometry() are pure, so both numbers come straight out of a fixture: build one seven-day series whose last day is { ci: { failed: 1, counted: 0, total: 5 } } and compare the header row with dayValue(day, 'ci').
Triage — verified at main 7be5658a; both items are live, not pending
#1221 merged at 05:36Z, so metrics.daily and the 7-day lines are on main; the "stays invisible until #1222" premise is closed and this is a defect in shipped code. Anchors are exact:
core/src/client/delivery-view.js:296-298 — the row prints as of {time} at :297 and then appends · today is partial · as of {time} at :298.
core/src/client/delivery-chart.js:44-49 — dayValue falls back to total, hence a dot on the same day.
Fix shape (pick these, do not leave it to the implementer)
One time, one source. When the partial hint shows, drop the standalone time at :297 and keep the hint's own clockOf. Do not remove the time from the hint instead: timeOf(asOf) (local clock) and clockOf(asOf) (the task's zone) are two different renderings, so two printed times can disagree, not merely repeat. New source string is today is partial in core/src/client/i18n.js; the zh side must lose its second 截至 too.
Make the row agree with the chart, not the other way round.share() falls back to total when counted === 0 — that is the denominator dayValue already draws, and it keeps a legitimate 1 of 5 day instead of blanking it. Blanking the chart would contradict the caveat line that already reports superseded.
Acceptance
One fixture day { ci: { failed: 1, counted: 0, total: 5 } } in a 7-day series: the header row prints 20%, and dayValue(day, 'ci') returns 0.2; the as-of paragraph contains exactly one time string per locale. Tests live at core/test/delivery-view.test.js and core/test/delivery-chart.test.js. Knife: revert share() to counted-only → the row test must go red.
core/src/client/** is T1 generated: regenerate with node core/scripts/build-client.mjs (core/client.js + patches/ds-bot/0008-client-bundle.patch), and keep patches/ds-bot/files/src/client/delivery-view.js byte-identical.
Claimed #1244 — branch dev/fix/1244-delivery-header, base live main8afe6c89 (base tree 6c5b94f8, equal to the API tree for that commit).
Fix is up as #1270 at tip 0e4ab2140253dc734950bd21571ca9239c35cf97:
① one time, one source: while today is partial the as-of line clocks it with clockOf once and the hint is the bare today is partial (zh 今天为部分日), so as of 04:00 AM · today is partial replaces the doubled rendering.
② the row follows the line: share() divides by counted when the day has one and by total otherwise — the denominator dayValue() draws that point from — so { failed: 1, counted: 0, total: 5 } reads 20% in the row and 0.2 on the line. A day with no runs still reads —.
Evidence (six columns plus the two knives) is in the pull request body. Off-lane: labels are not touched here.
Activity
Birfy commentedon Oct 26, 2026
Triage — verified at main
7be5658a; both items are live, not pending#1221merged at 05:36Z, sometrics.dailyand the 7-day lines are onmain; the "stays invisible until #1222" premise is closed and this is a defect in shipped code. Anchors are exact:core/src/client/delivery-view.js:296-298— the row printsas of {time}at:297and then appends· today is partial · as of {time}at:298.core/src/client/delivery-view.js:135—share()requirescounted > 0, hence—.core/src/client/delivery-chart.js:44-49—dayValuefalls back tototal, hence a dot on the same day.Fix shape (pick these, do not leave it to the implementer)
:297and keep the hint's ownclockOf. Do not remove the time from the hint instead:timeOf(asOf)(local clock) andclockOf(asOf)(the task's zone) are two different renderings, so two printed times can disagree, not merely repeat. New source string istoday is partialincore/src/client/i18n.js; the zh side must lose its second截至too.share()falls back tototalwhencounted === 0— that is the denominatordayValuealready draws, and it keeps a legitimate1 of 5day instead of blanking it. Blanking the chart would contradict the caveat line that already reportssuperseded.Acceptance
One fixture day
{ ci: { failed: 1, counted: 0, total: 5 } }in a 7-day series: the header row prints20%, anddayValue(day, 'ci')returns0.2; the as-of paragraph contains exactly one time string per locale. Tests live atcore/test/delivery-view.test.jsandcore/test/delivery-chart.test.js. Knife: revertshare()tocounted-only → the row test must go red.core/src/client/**is T1 generated: regenerate withnode core/scripts/build-client.mjs(core/client.js+patches/ds-bot/0008-client-bundle.patch), and keeppatches/ds-bot/files/src/client/delivery-view.jsbyte-identical.Owner: Dev4 · Labels:
bug,area:ui,agent-readyBirfy commentedon Oct 26, 2026
Written-by: Dev4
Claimed #1244 — branch
dev/fix/1244-delivery-header, base livemain8afe6c89(base tree6c5b94f8, equal to the API tree for that commit).Fix is up as #1270 at tip
0e4ab2140253dc734950bd21571ca9239c35cf97:clockOfonce and the hint is the baretoday is partial(zh今天为部分日), soas of 04:00 AM · today is partialreplaces the doubled rendering.share()divides bycountedwhen the day has one and bytotalotherwise — the denominatordayValue()draws that point from — so{ failed: 1, counted: 0, total: 5 }reads20%in the row and0.2on the line. A day with no runs still reads—.Evidence (six columns plus the two knives) is in the pull request body. Off-lane: labels are not touched here.
fix(delivery): print one as-of time, and one CI share (#1244)
fix(delivery): print one as-of time, and one CI share (#1244)