A Neutral 50 Is Not a Measurement: Anatomy of a Fail-Open Scoring Defect We Found in Our Own Publication Gate
We audited our own evaluator and found a fail-open scoring defect letting collection errors score neutral 50. Here's the finding, scope, and the fix.
Article highlights
- Estimated reading time: 10 minutes
- Published on: August 23, 2026
- Last updated: August 23, 2026
Article
What we measured: A read-only internal audit of TrustGrowth's maturity-aware evaluator, run on 2026-08-09 (UTC), found a code path in which a cohort whose eight pillar signals were all in a collection-error state receives the evaluator's neutral prior of 50 instead of being rejected, and is then authorized as publicly rank-eligible. No production cohort was ever observed in that state; a no-write probe constructed the case to confirm the path. Every cohort published for TechWright's six register sites between 2026-07-19 and 2026-08-09 was complete and evidence-bearing; the defect never fired in a production publication. This piece covers what the defect was, how we reproduced it without touching production, what it did and didn't affect, and the fix that reached production on 2026-08-10.
We've published a self-found defect before (see a previous self-audit find on our own site), and this is the same pattern: an internal audit surfaces a defect in TrustGrowth's own instrumentation, and we publish the finding rather than the reassurance.
The short answer, first: were past register numbers meaningless
No. Every cohort published for the six register sites between 2026-07-19 and 2026-08-09 was complete and evidence-bearing, and this piece explains a defect that existed in the evaluator's code path without ever producing a public number. If you track the public register of scored sites, nothing you read there during that window needs to be discounted.
What follows is the mechanics of a fail-open scoring defect we found, reproduced, and closed. It is not a retraction.
Method
- What was examined: the maturity-aware evaluator, the provisional cohort gate, and publication authorization, as deployed in production on 2026-08-09.
- Access mode: read-only. No production data, formula state, publication state, or source was mutated at any point in the audit.
- Cohort reviewed: every published cohort for n=6 TechWright register sites across the 2026-07-19 to 2026-08-09 window, checked for completeness and evidence.
- Reproduction: one local no-write probe, supplying all n=8 pillar signals as collection errors at zero confidence with no values, run against the deployed evaluator shape.
- What the method cannot establish: whether the score predicts anything. This audit checks evidence handling and gate behaviour, not predictive validity. The full scoring methodology documents what each of the eight pillars measures.
What we were auditing: the 2026-08-09 read-only scoring audit
This was a read-only, internal audit of the maturity-aware evaluator, the code that decides whether a provisional cohort of scored signals is authorized to publish to the register. It was not triggered by a customer report, a support ticket, or an external finding. We ran it as part of routine scrutiny of the evaluator's decision logic.
Three terms matter before the finding lands.
A provisional cohort is a batch of signal scores for one site, generated by a scheduled run, that has not yet been authorized to replace the site's currently published register entry.
The maturity-aware evaluator is the component that inspects a provisional cohort and decides whether it has enough real evidence to advance.
public_rank_eligible is the boolean that decides whether a published cohort carries a public rank and tier. It is worth knowing up front that three separate components touch that decision: the evaluator, the provisional cohort gate, and publication authorization. The defect lived in how they combined, not in any one of them.
The finding: eight signals in a collection-error state still scored a neutral 50
How the neutral prior is supposed to work
A neutral 50 exists to protect a sparse-but-honest site from a false zero. A brand-new site with three indexed pages and 40 days of Search Console history genuinely has thin evidence for several pillars, not because anything failed, but because the site hasn't existed long enough to generate the signal. Scoring that sparse-but-real state as a zero would punish immaturity as if it were a defect. The neutral 50 is the evaluator's stated hypothesis: "insufficient history, not necessarily a problem."
The case that broke the assumption
The assumption breaks when the eight signals are not sparse but failed. A TrustGrowth score is built from eight pillar signals: technical, authority, GEO, growth, E-E-A-T, performance, content, and visibility. If every one of them comes back in a collection-error state, the evaluator has no branch separating "not yet observed" from "failed to collect." The distinction matters: "not yet observed" means the collector ran and found nothing because there's nothing there yet; "failed to collect" means the collector itself errored and returned no result at all. Both landed on the same neutral 50.
To be precise about what we found and how: no production cohort was ever observed in this state. The audit traced the decision logic in deployed code, and the probe described below constructed the case to confirm it behaved as the reading predicted.
The consequence, stated in gate terms
The outcome needed three components to line up, which is why it survived as long as it did. The evaluator's own rank-eligibility flag was false for the constructed cohort, and that part worked. The provisional cohort gate accepted the cohort anyway, because it tolerated an observed count anywhere from zero upward. Publication authorization then overrode the evaluator's flag and set public rank eligibility to true for any live, non-incomplete row.
false
Provisional cohort gate
Observed count 0 of 8
Accept
Publication authorization
Live row, not flagged incomplete
public_rank_eligible = true
Units: evaluator score, 0–100 scale. Source: internal read-only scoring audit, 2026-08-09 (UTC).
Reproducing it: the no-write probe
We reproduced the defect with a local, no-write probe run against the deployed evaluator code. No data was written, no cohort was published, and nothing customer-facing was touched. The probe fed the evaluator a constructed cohort with all eight pillar signals supplied as collection errors, at zero confidence and with no values, and checked what each gate decided.
{
"probe_type": "no-write, local",
"signals_observed": 0,
"signals_total": 8,
"evaluator_score": 50,
"provisional_gate": "accept",
"public_rank_eligible": true
}
The result matched the audit finding exactly: zero of n=8 signals observed, provisional gate accepting, public_rank_eligible=true.
Two facts sit side by side here, and both are load-bearing. First, the probe proves the code path existed and behaved this way, which is not in question. Second, the separate cohort review of every publication between 2026-07-19 and 2026-08-09 proves the path never fired in a production publication in that window. Neither statement softens the other.
Why the same prior is safe here and unsafe there
The line is maturing evidence versus failed measurement. Maturing evidence, such as a new site with genuinely few backlinks, a low Search Console query count, or a thin content history, is a property of the site's age and size. Collection failure, such as a crawler timeout, an API error, or an unhandled exception in a collector, is a property of the measurement run, not the site.
Treating those two inputs identically is the defect itself. A neutral 50 is a hypothesis about immaturity: "this site probably hasn't generated enough evidence yet." It is not, and cannot be, a substitute for a measurement that the system failed to take. When a collector errors, the honest output is "unknown," not a number that looks like a considered, evidence-based estimate.
Scope: what was affected, stated plainly
The register sites in this audit are TechWright's own properties, so no external customer base is implied by this finding. The scope, stated without hedging:
- Every cohort published for all n=6 sites between 2026-07-19 and 2026-08-09 was complete and evidence-bearing.
- The defect never fired in a production publication in that window.
- Zero published register entries were affected.
- No data rollback was warranted, because there was nothing to roll back.
Limitations
Two limitations bound this finding.
First, the cohort review that confirms the defect never fired in production covers the six register sites over the 2026-07-19 to 2026-08-09 window, which is the period the current scoring formula has been publishing. We do not extend that finding to earlier publications under earlier formulas, and this piece makes no claim about them.
Second, the probe demonstrates the code path with a fully-failed cohort (zero of eight signals observed); it does not test every partial-failure combination — three failing while five succeed, for instance — so we cannot state from the probe alone how the gates handled mixed states before the fix. We can state only that the all-failed case failed open.
The fix: reject the row, don't advance the cohort
The new rule: reject any provisional row carrying an aggregate collection error or zero observed signals, rather than scoring it neutral and letting it through. A row already carrying that state is treated as unavailable rather than rank- or tier-eligible. On rejection, the evaluator retains the prior authorized cohort instead of publishing a new, unearned one — the register entry does not move until real evidence arrives.
The timeline: the audit finding was written on 2026-08-09. The fix was merged the same day, 2026-08-09. It reached production in the next scheduled deploy, on the morning of 2026-08-10, and is live now. The fix was not live in production on the day it was merged. It shipped in the following deploy window.
The general principle extends past this one evaluator: when measurement fails, the gate should close, not wave the row through.
What this does and doesn't say about the TrustGrowth score
This is not a claim that scoring is now validated or infallible.
The same 2026-08-09 audit lists other open holds we haven't closed yet, and separate measurement surfaces still honestly report "no evidence" where evidence is genuinely absent. What the score can and can't verify covers how that gap-reporting works on the check layer.
That honest gap-reporting is the behavior this fix extends to the publication gate. It is not an embarrassment to hide. It is the same discipline applied one layer earlier, before a number ever reaches a reader.
We are also not naming or approximating any site's current score in this piece, including TrustGrowth's own. Scores move daily against live GSC data, and a pinned figure would be stale within a week. "Neutral 50" here refers strictly to the evaluator's internal prior, not a published site score.
The governance question: what a score owes its reader when inputs fail
When measurement fails, the correct output is to publish nothing new and keep the previous record standing, not to produce a number that looks like evidence. A register that hides a bad number and a register that invents a neutral one fail the same reader in the same way: both substitute a system's convenience for the reader's need to know what's actually true.
This is consistent with the standing rules that govern what TrustGrowth will and won't publish, set out in the claim-safety rules behind the score, and with the broader argument that proof systems need current-state truth before they become a marketing asset. Retaining the prior authorized cohort instead of publishing a false one is that principle applied to a single evaluator decision.
Related reading: the check layer vs. the publication layer
This piece covers the publication and gating layer, where a scored row decides whether it is allowed to go live at all. A related but separate problem lives one layer earlier, at the check layer: telling apart a genuine finding from a check that simply failed to reach the site. That argument is covered in telling a failed fetch apart from a finding, and we won't restate it here, because the two pieces address different points in the pipeline.
FAQ
What is a fail-open scoring defect?
A fail-open scoring defect is a code path where a measurement failure (a collector error, a timeout, a missing result) is treated as a passable, neutral input instead of being rejected, allowing a decision to proceed as if evidence existed when it didn't.
Did this affect any published TrustGrowth register entries?
No. Every cohort published for TechWright's six register sites between 2026-07-19 and 2026-08-09 was complete and evidence-bearing, and the defect never fired in a production publication in that window.
What's the difference between sparse evidence and a collection error?
Sparse evidence is a property of a young or small site, where the signal genuinely hasn't accumulated yet. A collection error is a property of the measurement run itself, where the collector tried and failed to return a result. The defect treated both as the same input; they are not the same.
When was the fix deployed?
The fix was merged on 2026-08-09 and reached production in the next scheduled deploy, on the morning of 2026-08-10 (UTC). It has been live since.
Does this mean the TrustGrowth score is now fully validated?
No. This fix closes one gate-level defect; other open holds from the same 2026-08-09 audit remain, and separate measurement surfaces continue to report "no evidence" honestly where evidence is genuinely absent.
Key takeaways
- A neutral 50 is a hypothesis about site immaturity, not a substitute for a failed measurement.
- A cohort with all n=8 pillar signals in a collection-error state passed the provisional gate and was authorized as
public_rank_eligible=truebefore the fix, confirmed by a local, no-write probe and never observed in production. - Zero of the six TechWright register sites had a published cohort affected between 2026-07-19 and 2026-08-09.
- The fix, merged 2026-08-09 and live in production since the morning of 2026-08-10, now rejects any row with an aggregate collection error or zero observed signals and retains the prior authorized cohort instead.
- The general rule: when measurement fails, the gate closes; it does not wave the row through.
This post sits alongside our other build-in-public posts documenting defects we found in our own instrumentation before anyone external asked about them.
Know your site's real SEO score
Free GSC-verified audit, E-E-A-T scoring, and AI-powered content strategy.
Get Started Free