Skip to content

Marketplace: ALTCHA, rate limits, one-click report and admin blocklist #921

Closed

Description

@DoodleBears

Parent

#913 · #18

What to build

URL paste and reporting are protected without relying on services that are unreliable in mainland China. Both require a solved ALTCHA (self-hosted proof-of-work) challenge, solved in the Client and forwarded through the Host, with escalating cost tiers (default, elevated, high) driven by recent volume per source, plus per-IP and per-repository rate limits (a repository is crawled at most once per five minutes). Each entry has a one-click Report with an optional reason, needing no account and no GitHub access. Reports from a configured number of distinct hashed sources hide the entry as hidden_reported. An authenticated admin endpoint blocklists or restores entries; blocklisted repositories cannot be listed again by paste or discovery. Raw IPs are never stored.

Acceptance criteria

  • Challenge endpoint issues HMAC-signed ALTCHA challenges; paste and report reject missing, invalid, expired or replayed solutions.
  • Cost tier escalates with recent volume per source.
  • Per-IP and per-repository limits return typed refusals.
  • Report threshold of distinct hashed sources hides the entry; duplicates from one source don't count twice.
  • Admin endpoint (token secret) blocklists and restores; blocklisted repositories stay unlisted through paste and discovery.
  • The modal shows the challenge for paste and report and a report confirmation.
  • Worker boundary tests cover verification, tiers, limits, threshold, blocklist and admin auth.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationfeature:registrySoulSnapshot registry and marketplaceready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    • Status
      Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions