Between three months and a year since the last push. Nothing here is broken; all of it is drifting away from whatever the detection side shipped last quarter.
The rule that sets it, second edition:
pushed 90–365 days before the field check.
Why SEMI: pushed_at = 2026-05-13 — 93 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-05-13
archived
false
latest_release
none published
license.spdx_id
AGPL-3.0
stargazers_count
4700
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/ultrafunkamsterdam/nodriver
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
Why SEMI: pushed_at = 2026-04-04 — 132 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-04-04
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
263
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/Mattwmaster58/playwright_stealth
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
Why SEMI: pushed_at = 2026-02-26 — 169 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-02-26
archived
false
latest_release
—
license.spdx_id
Apache-2.0
stargazers_count
1200
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/daijro/browserforge
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
Why SEMI: pushed_at = 2026-01-28 — 198 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-01-28
archived
false
latest_release
—
license.spdx_id
GPL-3.0
stargazers_count
2500
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/QIN2DIM/hcaptcha-challenger
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
Why SEMI: pushed_at = 2026-04-25 — 111 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-04-25
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
602
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/Rajesh-Royal/Broprint.js
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
Why SEMI: pushed_at = 2026-04-17 — 119 days, inside the 90–365 day SEMI band.
Field
Value at this printing
pushed_at
2026-04-17
archived
false
latest_release
—
license.spdx_id
MIT
stargazers_count
469
http_status
200
fetched_at
2026-08-14T09:12:00Z
rubric_edition
2nd, in force
Endpoint: GET https://api.github.com/repos/Noooste/azuretls-client
unauthenticated · 60 req/hr
A live read does not change what is printed above it. The site records that you ran it; what GitHub returned is not kept. The printed state moves only when the register is swept and a new printing is issued. raw JSON
SEMI is the first edition's ACTIVE bucket after it was split in two, and the split exists because a single band covering everything from a slow quarter to a year of silence was hiding the most decision-relevant interval in the whole catalogue. An entry here has not stopped. It has paused, and the register's position is that a pause is a fact worth printing rather than absorbing into a green tick.
Three different situations produce this identical field value: a maintainer between jobs, a project that has reached a stable shape and genuinely needs no changes, and an abandonment that has not yet crossed a threshold. This register cannot tell them apart, and it does not pretend to. What it can do is make sure you know the gap is there before you build on it.
What to do with an entry in this state
Open the commit history rather than the star count. Look at whether the last several commits were substantive or housekeeping, whether open issues are being answered, and whether the project has a declared successor recorded here. A quiet project with an active successor is marked NRND by the rubric rather than left in this band, so anything still sitting in SEMI has no successor anybody has declared.
Then look at what the project is for. A cursor-movement library going quiet for four months matters less than a Chromium fork doing the same, because one tracks human behaviour and the other tracks a browser that ships every four weeks.
Questions about the SEMI mark
Answered from the rule printed above, and from the fields it reads.
What is the difference between SEMI and NRND here?
Time, and one other clause. SEMI is 90 to 365 days since the liveness field; NRND is 365 to 1095 days, or 180-plus days when another entry in this register declares the project superseded and that successor itself reads ACTIVE. The second clause is why a quiet project with a named replacement does not sit in this band.
Should I avoid tools marked SEMI?
This register does not tell you what to avoid. It tells you that a gap exists and how long it is, and it prints the fields the gap was measured from so you can decide against your own risk. Many entries in this band are perfectly usable and some are simply finished.
Can an entry move from SEMI back to ACTIVE?
Yes, on the next sweep, automatically, the moment its liveness field falls back inside 90 days. Nothing here is set by hand and nothing is sticky: the state is recomputed from the measured columns every printing, which is what makes the whole register re-checkable rather than merely re-published.
Every row on this page is a project someone once chose, and the state
beside it is the part that was invisible at the moment of choosing.
Donut Browser is filed in section
01 under the same rule, with the same fields printed against it and
no exemption of any kind: an open-source anti-detect browser under
AGPL-3.0, with engine-level fingerprint spoofing through the Wayfern
Chromium fork rather than injected JavaScript, a local REST API and MCP
server on your own machine, self-hostable sync, and a pre-launch gate
that refuses to start a profile when the proxy's exit geography
contradicts the profile's fingerprint. If it stops shipping, this
rubric marks it without anyone's permission.