Publishing is a manual tag push, and the drift is what produced yesterday's 404s
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Không có tệp, bài kiểm thử hoặc điểm bắt đầu của workflow nào được nêu. Trước tiên, hãy kiểm tra cách các tag publish* hiện kích hoạt việc xuất bản trong repository này và các ấn bản .fa, .fr và .zh-cn, sau đó so sánh các tùy chọn merge, lập lịch và phát hiện sai lệch. Công việc được xem là hoàn tất khi có một chính sách đã được thống nhất và hành vi được phối hợp để giới hạn mức độ lỗi thời trên tất cả các ấn bản.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The pattern
Every repository in this series publishes only when someone pushes a publish* tag — this repo and the .fa, .fr and .zh-cn editions alike. Merging to main changes nothing a reader can see.
That is a deliberate design and it has real merits: publishing is expensive, and a manual gate means someone decides when the site changes. But the gate is currently the only thing scheduling publication, and in practice it drifts. State as of this morning, before today's round of tags:
| Repository | Last published | Days stale |
|---|---|---|
| lecture-python-programming | 2026-07-16 | 18 |
.fa |
2026-06-19 | 45 |
.fr |
2026-07-17 | 17 |
.zh-cn |
2026-06-19 | 45 |
This repo had three lecture-affecting commits on main that no reader could see.
What that drift actually cost
Three things surfaced yesterday that all trace back to it, and none of which looked like a publishing problem at first:
polars 404'd in every language for four days. Added here on 2026-07-30 in #408, synced to all three translated editions and merged into each within the hour. Content and _toc.yml entries were correct everywhere. It was still 404 on all four sites — including this one — purely because nothing had been tagged since. The first read of that evidence was "the translations have not caught up", which was wrong; the English site did not have it either.
A wrong canonical stayed live for 45 days. The .zh-cn edition was emitting the English URL as its canonical on every page, telling search engines the entire Chinese edition was a duplicate of this one. Fixed in .zh-cn#80, but the fix only reached readers when that edition was finally tagged.
Divergence windows are set by tag timing, not translation speed. Sync PRs across all three editions merge in 8 minutes to 2 days, nearly always within the hour. Publishing lags by weeks. So when the language switcher advertises a page some edition does not have, the gap is almost entirely publish cadence — an inversion of the assumption I first wrote up in QuantEcon/action-translation#239, which had to be rewritten after measuring.
Yesterday's round is the counter-example: all four editions were tagged within about two minutes, all four builds succeeded in roughly six, and the switcher, the canonical fixes and polars all landed everywhere simultaneously. No divergence window opened at all. That is what good looks like, and it happened because someone did four things by hand in one sitting.
Worth considering
Not a concrete proposal — the right answer depends on how much manual control you want to keep:
- Publish on merge to
main, with the tag retained for deliberate re-publishes. Maximum freshness, least control. - Scheduled publish — a weekly or nightly cron that tags if
mainhas moved. Bounds staleness without publishing on every merge. - Keep it manual but make drift visible — a check that opens or comments on an issue when
mainis more than N days or M commits ahead of the last publish tag. Cheapest, and it addresses the actual failure, which is that nobody knew. - Whatever is chosen, coordinate the editions. The translated sites should publish close to this one. Their content is usually ready within the hour; it is the tags that spread them weeks apart.
The last point is the one I would weight most. The individual staleness is survivable; the editions drifting apart is what produces reader-visible breakage now that they cross-link.
Related
- QuantEcon/action-translation#239 — asks for a check that detects switcher and
hreflangtargets returning 404. Largely a symptom of this; worth less if publishing becomes regular. - QuantEcon/quantecon-book-theme#421 — language-aware 404 page, which softens the reader-facing half of the same window.
- Ngôn ngữ chính
- JavaScript
- Star
- 72
- Fork
- 31
- Merge trung bình
- 2 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 8
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của QuantEcon/lecture-python-programming
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 88/100
-
environment.yml uses conda channel 'default' instead of 'defaults'; trailing space in _toc.yml Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
QuantEcon/lecture-python-programming#607 · 1 bình luận ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
QuantEcon/lecture-python-programming#622 · 4 bình luận ·
Tất cả issue của QuantEcon/lecture-python-programming
Issue tương tự
-
bot:ai-assisted component:compact-js status:untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
midnightntwrk/midnight-sdk#403 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 86/100
DavidAnson/markdownlint-cli2#940 ·
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
githubnext/gh-aw-workshop#3692 ·
-
agent/guide documentation hive/hosted-available-lke648397-260827-5n31
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100