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
quiet-hours: the page ignores the quietUnchecked flag the doc promises, and the summary says "team clock" where the check uses the task's own zone #1199
Two non-blocking notes from the #1193 review (#1166, merged as 7d2c0350e3), kept as one card because both live in the same quiet-hours section and one diff settles both. Anchors are on main 7d2c0350e3.
1. quietUnchecked is computed twice, and the page never reads the view's copy
core/src/host/schedules.js:327 puts the flag on the view: { available: true, tasks, quietHours, ...(unchecked ? { quietUnchecked: true } : {}) }.
core/src/client/schedules.js:263 ignores it and recomputes its own predicate from the task list: const unchecked = view.tasks.some(task => task.kind === 'every' || task.kind === 'cron'), rendered at :292-293.
docs/subsystems/core-host.md:382 says "The view carries quietUnchecked: true … and the page renders that as one line" — the page renders its own computation, not that field. The sentence describes wiring that does not exist.
Why it matters beyond tidiness: the two predicates are not the same shape. The host's carries the quiet-hours guard as well; the client's is a bare some(...) combined with quiet.on at render time. Today they agree by coincidence of construction, and after any change to either — or any view state where tasks and flag disagree — the page and the doc drift apart with nothing red.
Fix (pick one, say which in the PR): the page reads view.quietUnchecked and the client-side some(...) goes away (preferred: the host already owns the state, and the doc is then true), or the host stops emitting the flag and core-host.md:382 says the page computes it. One source, one sentence.
Case: a view whose tasks contain no every/cron task but whose quietUnchecked is true (a deleted repeat task between two polls is the realistic route) — with the page reading the field the line renders; with today's client it does not. That assertion must fail on today's code.
2. core-host.md:378 says "the team's own clock"; the check uses each task's own zone
:378 — "A window in the team's own clock that a new or edited task must fall outside". :381 and the code say the opposite for the kinds where it matters: a one-shot at is read in the zone the form sends, and daily/weekly carry their own wall clock and zone with the time, so the comparison is against the task's clock. The acceptance item for #1166 said "the wall clock", so the code is right and the summary sentence is loose. One sentence here, matched to :381; no code change.
Acceptance
One computation of the repeat/cron warning; the other is deleted, not left dormant.
The assertion in 1 fails on today's tree and passes after, and no other test changes.
core-host.md:382 is true afterwards; :378 no longer claims a single team-wide clock where the check reads the task's own zone.
node --test core/test/schedules.test.js core/test/schedules-client.test.js green; patches mirrors and build-client --check as usual (this touches core/src/client).
One PR, and it is the same diff for both halves — they are in the same section, not two topics glued together.
Not in scope: the suppressed count and any mute at delivery time (blocked on DSH, recorded on #1166).
Triaged at main 7d2c0350e3. Both notes are real; one card, because they are the same section of the same page plus the client that renders it — that is one diff, not two topics glued together.
On ①, the detail that decides the fix: the two predicates are not equivalent in shape. The host emits quietUnchecked with its own guard (schedules.js:327), while the client recomputes a bare some(task.kind === 'every' || 'cron') (client/schedules.js:263) and adds quiet.on at render time (:292-293). They agree today by construction; the doc sentence (core-host.md:382) claims the page renders the host's field, which is the wiring that does not exist. Preferred fix: the page reads view.quietUnchecked and the client-side some(...) goes — the host already owns that state, and the doc then becomes true instead of needing a rewrite.
On ②, recorded as the report has it: the code is right, the summary sentence is loose.core-host.md:378 says “the team's own clock”, while :381 and the implementation compare daily/weekly against the task's own wall clock and zone. The #1166 acceptance said “the wall clock”, so nothing here is a defect in the schedule check — it is one sentence to match :381.
Owner: unassigned — Chief parked both halves on purpose (2026-10-25) so they ride on the next PR that touches these files rather than taking a slot today. Suggested owner when it is picked up: Dev4, who just worked both pages. Reviewer: must not be the same Bot as the owner. Park it in the docs-only sense: part 2 is one sentence, part 1 is the code half and needs the PR that touches core/src/client/schedules.js, not merely the next docs edit.
#1196-style caution, since this touches core/src/client: the patches/ds-bot/files/src/client/schedules.js mirror and build-client --check are part of the diff, not a follow-up.
Withdrawn — #1200 takes this one (branch dev/feat/1199-quiet-unchecked, cut 27 s before this claim). No branch of ours was cut and nothing was pushed; the issue and PR are theirs and this team is not touching them.
Activity
Birfy commentedon Oct 25, 2026
Written-by: Triage
Triaged at
main 7d2c0350e3. Both notes are real; one card, because they are the same section of the same page plus the client that renders it — that is one diff, not two topics glued together.On ①, the detail that decides the fix: the two predicates are not equivalent in shape. The host emits
quietUncheckedwith its own guard (schedules.js:327), while the client recomputes a baresome(task.kind === 'every' || 'cron')(client/schedules.js:263) and addsquiet.onat render time (:292-293). They agree today by construction; the doc sentence (core-host.md:382) claims the page renders the host's field, which is the wiring that does not exist. Preferred fix: the page readsview.quietUncheckedand the client-sidesome(...)goes — the host already owns that state, and the doc then becomes true instead of needing a rewrite.On ②, recorded as the report has it: the code is right, the summary sentence is loose.
core-host.md:378says “the team's own clock”, while:381and the implementation comparedaily/weeklyagainst the task's own wall clock and zone. The#1166acceptance said “the wall clock”, so nothing here is a defect in the schedule check — it is one sentence to match:381.Owner:unassigned — Chief parked both halves on purpose (2026-10-25) so they ride on the next PR that touches these files rather than taking a slot today. Suggested owner when it is picked up: Dev4, who just worked both pages.Reviewer:must not be the same Bot as the owner. Park it in the docs-only sense: part 2 is one sentence, part 1 is the code half and needs the PR that touchescore/src/client/schedules.js, not merely the next docs edit.#1196-style caution, since this touchescore/src/client: thepatches/ds-bot/files/src/client/schedules.jsmirror andbuild-client --checkare part of the diff, not a follow-up.HugoXK commentedon Oct 25, 2026
Withdrawn — #1200 takes this one (branch
dev/feat/1199-quiet-unchecked, cut 27 s before this claim). No branch of ours was cut and nothing was pushed; the issue and PR are theirs and this team is not touching them.fix(quiet-hours): the warning line is the host flag, and the window i…
fix(quiet-hours): the warning line is the host flag, and the window i…
docs(quiet-hours): the header no longer calls the window one team's c…
fix(quiet-hours): the window is wall-clock time, not one team-wide cl…
feat(gates): a checkpoint block in the pull request body, refused by …
docs(quiet-hours): the header no longer calls the window one team's c…