Skip to content

[DBIP] Seven columns are reserved for the team's automation and hold 0–13% real data; run the scripts, open the fields, or drop the columns #3574

Description

@EazyHood

Proposal type: Modify column; Other (decision on columns reserved for automation)

Affected scope (files/folders/chains): references/offers/sdks.csv (latestKnownVersion, latestKnownReleaseDate, maintainer, license); references/offers/apis.csv (verifiedUptime, verifiedLatency, verifiedBlocksBehindAvg); wiki pages SDKs and APIs

Motivation / problem statement

Seven columns are documented as reserved for the Chain.Love team's automation — the SDKs page says of the four SDK fields "Fields reserved for automation scripts from Chain.Love team - fetching this information from the action buttons link", and the APIs page describes the three verified* columns as kept by the team for provider performance history. Measured on current main, the automation has populated almost none of them:

column                         real   sentinel   blank   rows
apis   verifiedUptime             0    384 NULL      6    390
apis   verifiedLatency            0    384 NULL      6    390
apis   verifiedBlocksBehindAvg    0    384 NULL      6    390
sdks   latestKnownVersion         9    120 TBD      44    173
sdks   latestKnownReleaseDate     9    120 TBD      44    173
sdks   maintainer                16    113 TBD      44    173
sdks   license                   23    106 TBD      44    173

The table is the offers master, which is where the reservation is written. The same four columns exist in every network's sdks.csv and carry a further 77 TBD cells at listing level (20 / 20 / 20 / 17), included in the 685 counted in #3557.

So the reservation is doing two things at once: it keeps contributors out of seven columns, and it keeps the columns empty. For 74 of the 173 SDK rows the action-button link is a GitHub repository, where license, the latest release tag and date, and the owning organisation are one API call each — the fields could be filled today, by a script or by hand, and are not.

This is the decision that #2683 (NULL/null) and #3557 (TBD) both stop short of: those normalize the sentinel spelling; this one asks what the columns are for.

What the site publishes

@CodeRabbit-byte measured this in the thread below and I reproduced it at e83cde0 with the json-tools scripts at 5f89146. The four SDK columns are not internal: meta/columns.json defines them as user-facing table columns with labels and filters (Latest Version, Release Date and Maintainer as searchableMultiSelect, License as select). After csv_to_json.py fans the offer rows out across the networks, this is what those facets contain:

published sdks listing rows: 4381, on all 155 networks

column                      TBD    real   null   TBD share
license                    4106     275      0     93.7%
latestKnownVersion         4166     215      0     95.1%
latestKnownReleaseDate     4166     215      0     95.1%
maintainer                 3981     400      0     90.9%

In the License filter, TBD outnumbers Apache-2.0 4106 to 244 and MIT 4106 to 26.

The zero in the null column is not the data; it is the converter. tools/csv_to_json.py on json-tools carries SDK_TBD_FIELDS = (latestKnownVersion, latestKnownReleaseDate, maintainer, license) and ensure_sdks_tbd_fields(), called for every network, which writes the string TBD into any of the four that is missing, None or blank (introduced in 74d50e1, #563, February). Traced per published row: 98 TBD per column come from cells that are blank in the CSVs, 17-20 from listing rows, 2 from listing-only rows with no master entry, and the rest from the TBD in the offers master. So the site shows TBD for these four fields whenever a value is absent, however the CSV spells the absence. Two consequences:

The reservation is therefore not holding a field in reserve: it publishes a placeholder as a filter option on 155 networks, the tooling regenerates that placeholder from empty cells, and the wiki forbids contributors from touching the columns. That is the cost of leaving this undecided.

To reproduce: copy tools/ and meta/ from the json-tools branch onto a main checkout, run python tools/csv_to_json.py, and count the values of the four keys under sdks in json/*.json.

Detailed proposal

  • Change type: modify column (policy on who fills them); no column added or removed unless option 3 is chosen

One of three, in order of preference:

  1. Run the automation the reservation promises, on a schedule, and keep the reservation. If the script exists, the 7 columns become the most reliable data in the file; if it does not, the reservation is a note about a plan.
  2. Drop the reservation on the four SDK fields and let contributors fill them from the action-button link, with the format the existing rows already use (Apache-2.0, 2.1.0, 2026-02-24, Ava Labs). The three apis verified* columns should stay reserved: they are measurements, not lookups.
  3. Drop the columns that will not be populated, so the schema stops advertising data it does not hold.

Whichever is chosen, the 120 TBD and 384 NULL cells are then covered by #3557 and #2683 respectively, and the wiki sentence on the SDKs page is updated to match.

Reproduction

import csv, io
for f, cols in (('sdks', ['latestKnownVersion', 'latestKnownReleaseDate', 'maintainer', 'license']),
                ('apis', ['verifiedUptime', 'verifiedLatency', 'verifiedBlocksBehindAvg'])):
    rows = list(csv.reader(io.open(f'references/offers/{f}.csv', encoding='utf-8-sig')))
    h = [c.strip() for c in rows[0]]
    for c in cols:
        v = [r[h.index(c)].strip() for r in rows[1:]]
        print(f, c, 'real', sum(1 for x in v if x and x not in ('TBD', 'NULL', 'null')),
              'sentinel', sum(1 for x in v if x in ('TBD', 'NULL', 'null')), 'blank', v.count(''))

Rewards address: 0x06f44f4839fd5df4f4670036d028b29dec939363

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions