Skip to content

Commit e356967

Browse files
committed
fix(pipeline): delete dead database-only hot-list branch and create domain approval file
The hot-list generator's database heavy-hitter else-branch (which created velocity entries for DB-only rows) was dead code: the filter at line 262 dropped every entry without _times, and database entries never had any. Deleting it rather than reviving it is intentional: database- only rows would skip the independent-reporter gates that prevent one person from inflating the hot list. data/spam_domains_approved.json now exists as an empty approval list, documenting the workflow for domain feed review. Until domains are reviewed and added here, the domain feed continues to derive from the automated candidate pipeline only.
1 parent 5a0830d commit e356967

4 files changed

Lines changed: 6 additions & 14 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ language in [issue #7](https://github.com/SysAdminDoc/CallShield/issues/7).
508508
| URL Safety | Local spam-domain data; optional URLhaus (abuse.ch) |
509509
| Verification | Local Gradle, lint, and release-artifact checks |
510510
| Tests | 1100 JVM unit tests (JUnit) |
511-
| Strings | 1454 string resources and 34 plural groups (translation-ready) |
511+
| Strings | 1462 string resources and 34 plural groups (translation-ready) |
512512
| Accessibility | 100+ content descriptions, 48dp touch targets |
513513
| Min SDK | 29 (Android 10) |
514514
| Target SDK | 36 |

‎data/spam_domains_approved.json‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"description": "Domains reviewed and approved for the published spam domain feed. A domain that passes review here and also clears the automated gates in extract_spam_domains.py is included in spam_domains.json. Domains not in this file remain in spam_domains_review.json until reviewed.",
3+
"approved": []
4+
}

‎scripts/generate_hot_list.py‎

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -241,18 +241,6 @@ def main(argv: list[str] | None = None) -> int:
241241
# trending numbers out of the top-N entirely.
242242
if num in velocity:
243243
velocity[num]["total_reports"] = entry.get("reports", 0)
244-
else:
245-
velocity[num] = {
246-
"number": num,
247-
"type": entry.get("type", "robocall"),
248-
# Seen inside the window, but we cannot know how many of
249-
# its lifetime reports landed there — credit it one.
250-
"reports": 1,
251-
"total_reports": entry.get("reports", 0),
252-
"first_seen": entry.get("first_seen", last_seen),
253-
"last_seen": last_seen,
254-
"description": entry.get("description", "Community reported"),
255-
}
256244

257245
# ── Filter and rank ───────────────────────────────────────────────
258246
hot_internal = []

‎scripts/translation_floors.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"description": "Minimum translated-string coverage per locale, in percent. check_translations.py fails when a shipped locale drops below its floor. --update-floors only raises a floor. Lowering one is a hand edit, made on purpose and explained in the commit message.",
33
"floors": {
4-
"values-zh-rCN": 76.1
4+
"values-zh-rCN": 75.6
55
}
66
}

0 commit comments

Comments
 (0)