Skip to content

docs: provider scoring methodology#628

Open
dennis-tra wants to merge 10 commits into
FilOzone:mainfrom
probe-lab:provider-score
Open

docs: provider scoring methodology#628
dennis-tra wants to merge 10 commits into
FilOzone:mainfrom
probe-lab:provider-score

Conversation

@dennis-tra

@dennis-tra dennis-tra commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds docs/provider-scoring.md documenting a default strategy for how storage providers can be ranked in FOC (not yet used by code in this repo; intended as a guide for dashboards)
  • Explains the three-tier sort criteria (on-chain approval status, Bayesian score, provider ID tiebreaker)
  • Documents the Bayesian credible lower bound calculation and check weights (retention 40%, retrieval 35%, storage 25%), where a missing check contributes a zero lower bound so data completeness is folded into the score itself
  • Notes the checks that already run but aren't scored yet (Pull, Sampled Retrieval), since they aren't part of the SP approval criteria
  • Includes six concrete worked examples covering common scenarios (new provider, probing outage, poor retrieval, high fault rate, etc.)

@FilOzzy FilOzzy added this to FOC Jun 29, 2026
@github-project-automation github-project-automation Bot moved this to 📌 Triage in FOC Jun 29, 2026
@dennis-tra

dennis-tra commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

That's how that currently looks like (tbd if we want to keep the score there):

image

I think the numbers look reasonable. GTE a score of 99 it's colored in green.

Even if we're not showing the score in the table we may want to use it for sorting.

@BigLep BigLep moved this from 📌 Triage to 🔎 Awaiting review in FOC Jun 29, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new documentation page describing how Dealbot ranks storage providers (SPs) for FOC, including the sort tiers and the Bayesian credible-lower-bound scoring approach.

Changes:

  • Introduces docs/provider-scoring.md explaining the four-tier ranking order (approval, data completeness, Bayesian score, provider ID).
  • Documents the Bayesian score calculation (Beta posterior 5th percentile) and the check weightings used to combine check types.
  • Provides worked scoring scenarios to illustrate how rankings change under common provider performance patterns.

Comment thread docs/provider-scoring.md Outdated
Comment thread docs/provider-scoring.md Outdated
Comment thread docs/provider-scoring.md Outdated

@BigLep BigLep left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for giving critical thought here!

My comments are below. Generally was trying to think about ways to make it a bit simpler.

Comment thread docs/provider-scoring.md Outdated
Comment thread docs/provider-scoring.md Outdated
Comment thread docs/provider-scoring.md Outdated
| Priority | Criterion | Direction | What it means |
|---|---|---|---|
| 1 | Approved (yes/no) | Approved first | Providers that meet all approval criteria always appear above those that do not |
| 2 | Complete data (yes/no) | Complete first | Within each approval group, providers with data on every check rank above those with coverage gaps |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder how important this is. I think we can keep it simple and just use the Bayesian score, and let is be zero for checks where data is missing.

Comment thread docs/provider-scoring.md Outdated
Comment thread docs/provider-scoring.md

One structural note: a provider with a data gap on any check cannot be approved (no samples means the sample-count criterion fails, which blocks approval). So the state "approved and has a data gap" cannot occur. The data gap criterion only differentiates providers within the non-approved group.

## Concrete Scenarios

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will need to update if we make "approved" based on onchain state and get rid of "complete" data.

@github-project-automation github-project-automation Bot moved this from 🔎 Awaiting review to ⌨️ In Progress in FOC Jul 1, 2026
dennis-tra and others added 9 commits July 2, 2026 11:11
…code

Clarify that the ranking methodology is a proposed default and is not
currently used by any code in this repo. It is intended as a guide for
dashboards that want to give a sort order for SPs.

Addresses review feedback from @BigLep on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Base the top-level "approved" sort criterion on the SP's on-chain
approved status in the SP Registry, rather than on whether dealbot
observes them currently meeting the approval acceptance criteria.

Addresses review feedback from @BigLep on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the separate "complete data" sort tier. A missing check now
contributes a zero lower bound to the weighted Bayesian score, so
providers with coverage gaps rank below fully-covered peers through the
score itself rather than a dedicated criterion. This simplifies the sort
to three tiers (approved, score, provider ID) and removes the standalone
"Data Gap Criterion" section, whose premise no longer holds. Worked
examples and the probing-outage scenario are updated accordingly.

Also removes the semicolon/capitalization issue noted by Copilot, as
that sentence lived in the deleted section.

Addresses review feedback from @BigLep and @Copilot on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The section claimed three planned checks but listed two, and described
them as future/unlaunched. Pull and Sampled Retrieval already run in
dealbot, so link to their docs and explain the real reason they are not
scored yet: they are not part of the SP approval criteria.

Addresses review feedback from @BigLep and @Copilot on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Change "recognises" to "recognizes" to match the American spelling used
throughout the rest of the docs (e.g. "behavior", "optimize").

Addresses review feedback from @Copilot on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Approval is decided by an on-chain process; the dealbot check data
guides that decision rather than setting it. Make this explicit under
the criteria table and soften scenario 6, which implied dealbot itself
"gates"/"blocks" approval.

Per follow-up from @dennis-tra on PR FilOzone#628.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dennis-tra

Copy link
Copy Markdown
Contributor Author

Thanks @BigLep for the review. I've incorporated your remarks. The diff to your previous review is here:

probe-lab/dealbot@67058e5...a59874c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ⌨️ In Progress

Development

Successfully merging this pull request may close these issues.

4 participants