Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

readiness: count clauses that applied, so a clause's unmet share has a denominator

Aberta
#259 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
42/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
javascript

Direção de pesquisa

Start where render_readiness records verdict and unmet per clause, and see how clauses with skipped set are handled, using readiness.require[] as the source. Add an applied series per (contract, clause) in metrics.js and document it in METRICS.md. Then reword the threshold comment in packages/browser/src/readinessDrift.ts. Done when a test shows unmet / applied for a guarded clause and the two docs agree.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

enhancement

Problem

A clause's failure share is not readable from the plugin's metrics, and one browser comment understates how often a healthy clause fails.

  1. No denominator per clause. render_readiness records verdict once per governed variant and unmet once per failing clause. A clause that a guard skipped is not counted at all. So unmet for a clause can only be read against all the contract's renders, not against the renders where that clause applied. The fleet's drift detector (packages/browser/src/readinessDrift.ts) measures the other way: failures over applicable renders. The two disagree whenever a clause is guarded.
  2. The drift threshold comment is wrong for guarded clauses. ReadinessDriftPolicy.threshold says healthy clauses fail on "a few percent of renders". A clause guarded on a third-party slot can fail on about a quarter of the renders it applies to and still be healthy, because the slot mounts with nothing to show.

Evidence (2026-10-16, one production cluster)

  • One product contract had a review-summary clause guarded on the slot's presence. The slot mounts on products with enough ratings. On about 25% of those, the vendor has no summary, so the clause can never hold. The stored pages are correct.
  • Plugin: 159,162 verdicts, 4,428 unsatisfied, with that clause unmet on 3,001. The share of renders where it applied isn't recoverable from render_readiness.
  • Fleet: up to 7 of 60 workers latched that clause in readinessFailing for hours. They measured about 40% failure where the slot applied, against the 50% threshold and 25% recovery.

The clause itself is being fixed in the consumer's contract; that is not this issue.

Proposed

  • Plugin: record, per clause, whether it applied: for example render_readiness series applied (contract, clause) from readiness.require[] where !skipped. unmet / applied is then the clause's failure share, on the same denominator as the drift detector. Document it in metrics.js and METRICS.md.
  • Browser: reword the threshold doc. A guarded clause's legitimate failure share depends on how often its guard's slot is empty; don't promise "a few percent".

Done when

  • unmet / applied per clause is readable from analytics, with a test.
  • The METRICS.md entry and the readinessDrift.ts comment match.
Linguagem predominante
JavaScript
Estrelas
0
Forks
0
Merge médio
3h 1min
PRs com merge (30d)
70

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de HarperFast/prerender-plugin

Todas as issues de HarperFast/prerender-plugin

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.