Skip to content

fix: move the heart to week 37, where it can still be drawn - #14

Merged
vyncint merged 2 commits into
mainfrom
fix/start-week-37
Sep 21, 2026
Merged

vyncint merged 2 commits into
mainfrom
fix/start-week-37

Conversation

@vyncint

@vyncint vyncint commented Sep 6, 2026

Copy link
Copy Markdown
Owner

The heart could not be drawn. Not "behind" — holed, mossaic's word for a
plan where days inside the picture are already brighter than the picture
wants them, which no amount of future contributing takes back.

Heart · 2026 · week 35, 11 columns — tracking vyncint
  Cannot be drawn cleanly — 5 of 56 shaded days are already too bright.

Five days, four of them on days the heart needs dark:

day has wants
2026-08-30 7 at most 0
2026-09-02 82 at most 70
2026-09-03 41 at most 0
2026-09-04 2 at most 0
2026-09-05 36 at most 0

Why week 35 stopped working

The README's reason for choosing 35 over 34 was that it was "the first
column still entirely in the future". It was, when the plan was made. Week
35 began on Sunday 30 August, and between then and now ordinary work landed
inside it. The rule was right; the placement simply aged out from under it.

Where it goes

Swept every placement that fits the year, against live data today:

start week verdict holes
33 holed 13
34 holed 8
35 holed 5
36 holed 1
37 – 42 reachable 0
43+ overhangs the year —

37 through 42 are all clean and all cost exactly the same — 56 days at 36
contributions each, 2,016 in total. Week 37 is the earliest, begins Sunday
13 September so it is still entirely in the future (the original rule, held
to), and keeps the most slack: the last lit day is 25 November, thirty-six
days before the year ends. Week 42 is the last that fits.

After:

Heart · 2026 · week 37, 11 columns — tracking vyncint
  On track — 0 of 56 shaded days are right, 56 to go.
  level  days   done   owing   each
      2    56      0   2,016   36
      0    21     21       -   must stay dark
  still owing  56 days · 2,016 contributions
  today        outside the picture — nothing owed

The rule this edit breaks

"Keep this fixed: the plan is these inputs, and changing one compares
against a different plan." That rule is the reason this PR carries a
paragraph in the workflow and a paragraph in the README saying what moved,
when, and why — the numbers in reports from before today are not comparable
with the ones after it. This restarts the plan on purpose.

Three corrections carried in the same pass

All measured, not inherited:

  • 36 per day, 2,016 total — the README said 35 and 1,960. The year's
    peak has moved since it was written, and the peak is what prices a shade.
  • eleven columns — the "Why a picture" paragraph said thirteen. The
    .art file, the table and the tool all say eleven.
  • the placement guard now names where the placement actually shows up.
    mossaic 0.7.0 puts it in the report header (· week 37, 11 columns) and
    exposes it as the start-week and columns outputs; before that it
    appeared on no line at all, so the guard pointed at nothing.

The plan was `holed` — not behind, but unable to be drawn cleanly at that
placement however much is contributed from here on. Five days inside the
picture had picked up ordinary contributions since the plan was made, four
of them on days the heart needs dark, and nothing takes a contribution away:

    2026-08-30  has 7,  wants at most 0
    2026-09-02  has 82, wants at most 70
    2026-09-03  has 41, wants at most 0
    2026-09-04  has 2,  wants at most 0
    2026-09-05  has 36, wants at most 0

Week 35 began on 30 August. The README's reasoning for choosing it over 34
was that it was "the first column still entirely in the future" — and it was,
when the plan was made. It stopped being so before it arrived.

Swept every placement that fits, against live data on 2026-09-06:

    week 33..35  holed      13 / 8 / 5 holes
    week 36      holed      1 hole
    week 37..42  reachable  0 holes     56 days · 2,016 contributions

Week 37 is the earliest clean one, begins Sunday 13 September — still
entirely in the future, so the original rule holds — and keeps the most
slack: the last lit day is 25 November, thirty-six days before the year ends.
Week 42 is the last that fits.

`Cannot be drawn cleanly` becomes `On track — 2,016 contributions to go`.

This is the one edit "the plan is those inputs" exists to prevent, so both
the workflow comment and the README record why it happened and that reports
from before today describe a different plan.

Three corrections in the same pass, all measured rather than carried over:
the cost is 36/day and 2,016 total, not 35 and 1,960 — the year's peak has
moved since the README was written, and the peak is what prices a shade. The
"Why a picture" paragraph said thirteen columns where the file, the table and
the tool all say eleven. And the placement guard now names where the
placement actually appears: mossaic 0.7.0 puts it in the report header and
exposes it as the `start-week` and `columns` outputs, having previously
carried it on no line at all.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
Week 37 was the earliest clean placement when this branch was written on
6 September. It was not merged that day, and by 21 September it was holed
by four days — and 38 by one — so merging as written would have
reintroduced exactly the bug the branch exists to fix.

That is the same failure a second time, not a new one. The rule ("the
first column still entirely in the future") was never wrong; the gap
between choosing a placement and landing it is enough for the future to
become the past. So the comment in track.yml now says to measure on the
day it lands, and names the command that prints the earliest clean column
in its own output.

Week 39 begins Sunday 27 September and ends 12 December, last lit day
9 December — twenty-two days of slack before the year ends rather than
thirty-six, which is the price of the delay and still leaves room for a
bad week.

`mossaic-art --matrix heart.art --year 2026 --start-week 39 --track
vyncint` prints no "cannot be drawn" line; 38 still does.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
@vyncint

vyncint commented Sep 21, 2026

Copy link
Copy Markdown
Owner Author

Rechecked before merging, and week 37 had aged out the same way week 35 did:

$ mossaic-art --matrix heart.art --year 2026 --start-week 37 --track vyncint
  Cannot be drawn cleanly — 4 days are brighter than the picture wants,
  and nothing takes a contribution away.
  --start-week 39 draws it cleanly.

Week 38 is holed by one day; 39 is the first clean one today. Merging this as written would have reintroduced exactly the bug it was opened to fix — this branch was correct on 6 September and sat for fifteen days.

Pushed f59022a moving it to 39 (Sunday 27 September → 12 December, last lit day 9 December, twenty-two days of slack instead of thirty-six — the price of the delay). README and track.yml both updated, and the history in each now records both moves with the same cause.

The part worth keeping: the rule was never wrong. "The first column still entirely in the future" is correct at the moment you measure it, and the gap between choosing a placement and landing it is what breaks it. So track.yml's comment now says to measure on the day it lands and names the command that prints the earliest clean column.

@vyncint
vyncint merged commit af98896 into main Sep 21, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant