Publishing is a manual tag push, and the drift is what produced yesterday's 404s
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Nenhum arquivo, teste ou ponto de entrada do workflow é especificado. Comece inspecionando como as tags publish* atualmente acionam a publicação neste repositório e nas edições .fa, .fr e .zh-cn; em seguida, compare as opções de merge, agendamento e detecção de divergências. O trabalho estará concluído quando houver uma política acordada e um comportamento coordenado que limitem a obsolescência em todas as edições.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- JavaScript
- Estrelas
- 72
- Forks
- 33
- Merge médio
- 4d 18h
- PRs com merge (30d)
- 3
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de QuantEcon/lecture-python-programming
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
QuantEcon/lecture-python-programming#642 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
QuantEcon/lecture-python-programming#634 ·
Mantenedores costumam responder em até 1 dia
-
Prose typos in functions, oop_intro and python_oop (found via French edition review)Talvez já em andamento @SwetaKumari7 assumiu há 13 dias. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 95/100
QuantEcon/lecture-python-programming#633 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
QuantEcon/lecture-python-programming#608 ·
Mantenedores costumam responder em até 1 dia
-
environment.yml uses conda channel 'default' instead of 'defaults'; trailing space in _toc.ymlAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
QuantEcon/lecture-python-programming#607 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de QuantEcon/lecture-python-programming
Issues semelhantes
-
clawsweeper:needs-product-decision clawsweeper:needs-security-review clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:security issue-rating: 🦞 diamond lobster P2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
openclaw/openclaw#166870 · 2 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
⚠ needs intervention document structure changed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Bug pulumi/pulumi
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
uoftblueprint/canada-basketball#32 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
andromarces/agent-loops#571 ·
Mantenedores costumam responder em até 1 dia