cross-posted from: https://lemmy.world/post/49778353

Also /c/modabuse. Also /c/yepowertrippinbastards. Also lemmy.ml/c/worldnews, comrade, ACAB, and 552 individual accounts across 67 instances, about half of them on lemmy.world.

None of this is in the source code. It’s downloaded at runtime from a file nobody has ever looked at.

If you’re just tuning in

Tesseract is a third-party web frontend for Lemmy, maintained by asimons04 and licensed AGPL-3.0. Admins deploy it on their own servers alongside or instead of lemmy-ui, and there are public instances of it people use to browse Lemmy generally. If you’ve used a Lemmy site that didn’t look like stock Lemmy, there’s a fair chance it was this.

Last week db0 posted a PSA: Tesseract contains a blacklist of instance domains compiled directly into the application. 32 of them. Admins can’t see it, can’t configure it, and aren’t told it’s there. Connect to a listed instance and the app tells you it’s “incompatible,” which is not true.

I went through the code to see how that was implemented. The hardcoded list turns out to be the small half of the system.

There’s a second filter policy fetched over HTTP every time the app loads. It isn’t in the git repository. It’s unauthenticated and world-readable, so anyone can pull it. Right now it carries 552 user accounts, 2,275 username patterns, 54 instances, 97 communities, 289 keyword patterns and 351 domains, with every category set to hide matches rather than flag them. Not collapsed behind a click. Simply absent, with no indication anything was removed.

Verify all of it in ten seconds

curl -s https://tesseract.dubvee.org/tesseract/api/system/policy \
  | base64 -d | gunzip > policy.json

That’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks. There’s a stale fallback copy at /data/policy.dat as well.

It filters criticism of moderators

  • lemmy.sdf.org/c/modabuse — listed
  • lemmy.dbzer0.com/c/yepowertrippinbastards — listed
  • lemmy.dbzer0.com/c/YPTBcirclejerk — listed
  • community regex power ?tripping?
  • keyword censoring me

Call the rest of it whatever you like. This part is not spam defence.

It filters words

The 32 community name patterns include Communis(t|m), Conservativ(e|es|ism), Leftis(t|m), Libertarian(ism)?, ^Green Part(y|ies), Zionis(t|m), (Police|Cops), guillotine and billionaire.

Keywords include comrade, ACAB, neoliberal, proletaria(n|t) and death to.

Filtered communities on instances that aren’t blocked: lemmy.ml/c/worldnews, lemmy.today/c/news, lemmy.ca/c/politicalnewscanada, lemmy.ca/c/usa, infosec.pub/c/strategic_unions.

The 552 users aren’t bots

67 instances. 272 on lemmy.world alone, 40 on sh.itjust.works, 19 on lemmy.ca, and 28 instances contributing exactly one person each.

355 of the 552 usernames are plain alphabetic, twelve characters or under, median length eight. Only 36 look like spam registrations. A bot list looks like the opposite of that.

Seven of them aren’t even Lemmy. There are Mastodon and Friendica accounts in there: people who have never used Lemmy, hidden by a Lemmy frontend, with no possible way of finding out.

I have the list and I’m not posting it. Most of these are ordinary people who got pattern-matched, and 552 names on this comm is a harassment target inside an hour. Run the command above and grep for yourself.

And it lies about it

When the instance block fires you get: “Incompatible Instance. Not Supported. $instance is not compatible with Tesseract.”

Nothing is incompatible. It’s a policy decision dressed as an API error, and it’s what had db0 chasing a version mismatch that never existed.

For the hidden users, communities and keywords, you get no message at all.

Admins can’t switch it off

Tesseract has env vars for PUBLIC_DOMAIN_BLACKLIST, PUBLIC_FAKE_NEWS_BLACKLIST and the shortener lists. There is none for either blocklist. enableToxicMode bypasses the other filters and explicitly not this one.

Self-host it and you cannot disable this, nothing in your config admits it exists, and the contents can change without you pulling a commit.

Before someone says it

A lot of that domain list is real spam defence. It filters conservatism as well as communism. “It targets the left” doesn’t survive the data and I’m not going to pretend it does.

The problem is that spam filtering and political editorial got welded into one undocumented, remotely-updatable blob, shipped hidden, to admins who’ve never read it and users who don’t know it’s there. The spam work is what makes the rest unauditable: “it’s a spam list” answers every individual question and none of the whole.

And /c/modabuse is not spam.

Asks

  1. Publish the runtime policy in the repo, or kill the endpoint.
  2. Stop reporting a policy block as a technical incompatibility.
  3. Tell users when something’s been hidden. One line.
  4. Give operators an off switch, like every other blacklist in the codebase has.

It’s AGPL-3.0 and db0 already forked it. That’s the licence working as designed. But forking isn’t disclosure, and the admins who need this are precisely the ones with no reason to go looking.

If you run Tesseract, you are relaying a 111KB moderation policy you have never read, under your instance’s name, to users who don’t know it exists.

Full contents of every list, unedited, in the comments.

  • cavitationfetishist2@quokk.au
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    Fucking libs, man. Its the core of their ideology; that people must be nice and honest, and live their nice little lives, supported by imperialist extraction and exploitation, enforced by brutal repression. They can’t help but lie. They can’t help but be cuddly little fasch-larvae.

    Its cute to think Nazis come from reading too much 4Chan, and some do I guess, but the new York times has made so many more.

      • Bakkoda@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Yeah I’m pretty fuckin high right now but even i know i don’t know what is going on. Don’t know what the fuck is going on. Can someone make a graph or chart for some kind of geolocation politically we got going on here?

        Ooooooh new rule for Lemmy: If you are going to use a name ala shitlib or magat or wtfever you must now first identify yourself with the same nomenclature so that I may know the adversary who has shattered my political ideology so vehemently.

      • TotallynotJessica@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        They’re basically saying that the “normal” centrist political position that most self identified liberals take for granted is actually deeply flawed. Rather than niche online message boards being responsible for fascism gaining power, mainstream media had a bigger role. Instead of liberals standing by principles of democracy and human rights, they ultimately give in to nationalism and support oppression so long as it claims to be on their side.

  • MinnesotaGoddam@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I was having a genuinely good day until i saw i wasn’t on the list. jesus fucking christ to completion in the hand holes and then wiping himself off in the spear wound what kind of blasphemy does a dude have to commit to get on a list nowadays

    • sp3ctr4l@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      … well that’s some damn fine blasphemy right there, if I do say so myself.

      I’m apparently on the list.

      Honestly, surprised the file is still up for me to pull, t+24 or t+48 hours on.

      They bothered to end cap the regex with an $… can’t have anything with ‘sp3ctr4l’ anywhere in the name… I don’t have alts, so… I don’t know what the point of that is…

      Oh well.

      Not my first time.

      I got shadow banned and also just actually banned from half of reddit for calling out mods on their bullshit despite being one of the earliest/oldest users there. Obligatory fuck Spez.

      I’m reasonably confident that the twitter account I created soley to scream insults and baseless threats at Elon, when he accidentally bought it, … reasonably confident he personally banned me, as … there weren’t really any other actual support staff at that point time, Elon had revoked their credentials.

      I like to think I contributed, at least in a small way, to his subsequent insane crashout telling advertisers to ‘go fuck yourselves’.

      … this?

      This reminds me of literal petty children running Gmod servers, hardcoding steamid blocklists in hashed files… the hilarious part about that is that they actually bothered to properly encrypt them, so you couldn’t read them without a valid server key.

      So this? Actually laughable, I’ve literally seen 14 year olds do this in a more clever way.

      Fuckin oi vei, man.

      • MinnesotaGoddam@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        I’m so envious, dude. I am not sure how to explain this drama to my wife. She just knows I’ve been giggling into my coffee all day. The best analogy I could think up was kids running Minecraft servers.

        • sp3ctr4l@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Minecraft servers are often extremely, extremely similar, that is a very close comparison, both technically, and in terms of uh… lets say the ‘character’ of those involved.

          Yep.

          This is where we’re at.

          … trying real hard right now to not go get a pack of smokes, god damnit.

          EDIT: Modded Mincraft servers, I should say, are very similar to custom GMod servers/communities.

    • SeventySeven@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      I barely even post and im on the list, WTF did I do wrong?!

      Edit: Oh I guess we’re too based for the dev to handle.

  • hendu@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    This tells me the project cannot be trusted at all. The dev is clearly willing to ship undisclosed block lists… What’s next, a crypto miner? Credential harvesting? Who knows.

  • bamboo@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I took a look at it earlier today and the addition of instances to be blocked was super shady and sloppy on part of the maintainer. Some high profile instances were added to the blocklist alongside unrelated changes and not mentioned in the git commit message, for example this commit: https://github.com/asimons04/tesseract/commit/fcd71e01e9f64d5ff40dbee9b815971bc00e9a2a

    Also apparently the error you’d get when going to the blocked instance was a generic error which makes the user think there’s a network issue or incompatibility with the API or something and the idea of a hard coded blocklist is never presented to the user as the source of the issue.

    • Zarobi@aussie.zone
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      That Github is a fun read in general. Some of these variables and function names are sending me. They even seem to be blocking proton email addresses.

      Tap for blacklists.ts

      https://github.com/asimons04/tesseract/blob/main/src/lib/blacklists.ts

      My personal highlights:

      
      // Domains that have been identified as frequent spam
      export const SPAM_SITES = [
          'gofund.me',
          'gofundme.com',
      
      // ...
      
      const SHIT_KNOWN_BAD_LEMMY_ACTORS_SPAM
      
      // ...
      
      // Very non-comprehensive list of domains that host disposable/temporary/throwaway email aliases. Basically just the low-hanging fruit to aid in decision making.
      export const THROWAWAY_EMAIL_DOMAINS = [
          'proton.me',
          
      // ...
      
      export const BLACKLISTED_INSTANCES: string[] = [
              "abolish.capital",
              "altmedia.house",
              "anarchist.nexus",
              "chapo.chat",
              "chatgptjailbreak.tech",
              "diggita.com",
              "hexbear.com",
      		"hexbear.net",
              "ibbit.at",
              "test.hexbear.net",
              "www.hexbear.net",
              "hilariouschaos.com",
              "lemmy.bestiver.se",
              "lemmy.blahaj.zone",
              "lemmy.dbzer0.com",
              "lemmy.doesnotexist.club",
              "lemmy.durstig.online",
              "lemmy.ml",
              "lemmy.razbot.xyz",
              "lemmybefree.net",
              "lemmygrad.ml",
              "lemmyusa.com",
              "lemy.lol",
              "maga.place",
              "multiverse.soulism.net",
              "news.abolish.capital",
              "nnia.space",
              "noauthority.social",
              "r.nf",
              "realbitcoin.cash",
              "redlemmy.com",
              "welppp.com"
      ]
      
      // ...
      
      // Fake news sites that MBFC doesn't have on file or are known disinformation campaignss
      export const FAKE_NEWS = [
          ...RUSSIAN_GRU_INFOROS,
          ...RUSSIAN_NEWS_DOPPLEGANGER,
          ...RUSSIAN_OPERATION_UNDERCUT,
          ...RUSSIAN_PORTAL_KOMBAT_PRAVDA_NETWORK,
          ...RT_ALIASES,
          ...STOP_NEWS,
          ...OTHER_RUSSIAN_CAMPAIGNS,
          ...JOHN_MARK_DOUGAN,
          ...SHIT_KNOWN_BAD_LEMMY_ACTORS_SPAM,
          ...MAGA_PROPAGANDA,
      
          // Admin-extended list from env vars
          ...BLACKLIST_CONFIG.FAKE_NEWS_BLACKLIST
      ]
      
      // ...
      
      export const isFakeNewsSite()
      
      // ...
      
          if ( get(userSettings).enableToxicMode) return false
          
      
      Tap for filtering.ts

      https://github.com/asimons04/tesseract/blob/main/src/lib/filtering.ts

      They seem to be filtering out a lot of political keywords!

      // Initialize a default blank policy
      export const defaultFilterPolicy: FilterPolicy = {
          name: 'Default Policy',
      
          communityRegexes: [
              "^Ban ",
              "^Boycott",
              "(Elon|(Elon )?Musk)",
              "^Fuck",
              "Palestine",
              "Iran",
              "Israel",
              "Musk",
              "^News|News$",
              "^Politic(a|s|al)|^Politik",
              "Trump",
          ],
          communityInstances: [
              "ani.social",
              "pawb.social"
          ],
      
      Tap for data.json

      https://raw.githubusercontent.com/asimons04/tesseract/refs/heads/main/src/lib/MBFC/data/data.json

      Some juicy comments in this one. It’s a list of news sources with their “bias” (left/right/centre/etc). They didn’t write this, they copied it from https://github.com/drmikecrowe/mbfcext/blob/main/docs/v5/data/combined.json

      “Official Media Bias/Fact Check Extension”

      Be informed as you read your Facebook feed. We are the most comprehensive media bias resource on the internet. There are currently 1100+ media sources listed in our database and growing every day. Don’t be fooled by Fake News sources. This extension is completely open source, and the source code is hosted here.

      politico.com
      bbc.com
      cbsnews.com
      front.moveon.org
      
      These media sources are moderately to strongly biased toward liberal causes
      
    • Carl@anarchist.nexus
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Some high profile instances were added to the blocklist alongside unrelated changes and not mentioned in the git commit message… Also apparently the error you’d get when going to the blocked instance was a generic error…

      Yeah, those two issues are exactly why the hidden blocklist was noticed. The site admin for db0 noticed that they were running into a version incompatibility after they updated their stack. But the “incompatible” version of Lemmy was supported. So what was causing the incompatibility? Maybe an API issue? Nope, API is fine.

      After some digging, they eventually realized that it was happening due to an instance block. But they didn’t have their own instance blocked, so why was it being blocked? It was suddenly being marked as “incompatible” because they updated to the version of Tesseract that included the hidden blocklist. So when they tried to start their stack after updating, Tesseract downloaded the hidden blocklist (which can’t be disabled) and blocked the instance it was currently running on.

  • ikt@aussie.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    This dude just looks like he’s building a fediverse he wants to see?

    • SatyrSack@quokk.au
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      This looks almost like a personal block list that got added to the full production codebase. To be clear: I do not think this was an accident. But I had plenty of interaction with this dev on the 30 Rock community, and they were clear about personally wanting to use Lemmy as a means of escapism and to ignore politics of all sort. They clearly want to ignore all remotely political discussions, but that shouldn’t extend to a hard-coded block list in a frontend they create for other people to use. Creating the tools to allow each user to set up custom block lists for themselves is great. It just shouldn’t be a preestablished list that affects literally every user of that frontend.

      • ripcord@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Can you clarify which Lemmy account you are referring to by “this Dev”? I’m a little confused about who maps to what specifically here.

        Also I 100% agree with you here.

        • SatyrSack@quokk.au
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          @ptz@dubvee.org

          He is the admin of that instance, which he had set up as a Beehaw-like safe space (the rules/FAQ even called out Beehaw as inspiration). He then developed Tesseract to act as a bandaid to fix issues with Lemmy that could be fixed by creating a custom frontend. And if Tesseract was JUST used for his safe space, this block list stuff would be fine. But in reality, it is designed/intended to be used by ANY Lemmy instance.

      • MelodiousFunk@slrpnk.net
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        This looks almost like a personal block list that got added to the full production codebase. To be clear: I do not think this was an accident.

        I’m leaning towards accident or sabotage. It’s way too obvious and way too far-reaching to believe nobody would notice.

        • frongt@lemmy.zip
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          They’ve confirmed it was intentional: https://lemmy.world/post/49817942

          I don’t know how you could accidentally write a regex list, encode it, secretly reference it, and commit and push it to your repo. That’d be very hard to do.

          • MelodiousFunk@slrpnk.net
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 months ago

            Thanks for providing the link to the rationale, notably posted after my comment went live. As for how it can happen “accidentally,” that’s easy. Have a file that’s referenced that way, and sub in another due to human error. Classic case of pushing test to prod etc. Doesn’t take a whole lot of imagination.

            Pretending this is normal behavior?

            Now that takes imagination.

      • ikt@aussie.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        that does make sense! tbh it looks very much like something I would make… for myself… or if I did release it for others it would def be advertised as “lemmy no politics edition” not as just a general front end

    • Otter@lemmy.ca
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      I think we just notice it more because we have less content, so you’re more likely to hear about each bit of drama that comes up and you’re more likely to know one of the parties involved. There was lots of drama on reddit too, but I didn’t subscribe to the communities that talked about it and I often didn’t know enough about each incident to judge anyone

      It’s still annoying though 🫤

    • teslekova@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      In this case, I think it’s part of a general effort by left-liberal refugees from Reddit, who genuinely believe that the fediverse will be the new future of Redditesque forums one day.

      Unfortunately, they have learned the wrong(imo) lesson from spez becoming a Nazi and pushing his political agenda onto every Redditor. They want the politics of this new medium to be no further left than AOC, and no further right than Chuck Schumer, while seeming to be completely free and open and information must be free, etc.

      You can see that in their choice of bans.

      I am glad this particular effort was so incompletent. It will not be the only one.

      Edit: Oh man, spelling “incompetent” incorrectly there and getting everything else right deserves to be preserved.

      • sunnie@slrpnk.net
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Edit: Oh man, spelling “incompetent” incorrectly there and getting everything else right deserves to be preserved.

        I noticed that too and it’s a thing of beauty! There should be a special prize for that.

        • bitjunkie@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          As well as editing to point out one’s own stupidity instead of just correcting it. Good shit all around.

  • Pogogunner@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    2 months ago

    This is very upsetting. I could see an argument if it was made a user toggle for a “more friendly experience” or something like that (Like the enable toxic mode toggle), but hiding the blacklist and then an opaque error message is cowardly. Having it be pulled every time from another website instead of built into the software is also a very clear accountability dodge.

    Also reading over the file, I think it’s biased, especially towards unfairly heavy moderation.

    Edit: Just noticed I’m on the blocklist. What he said fuck me for?

    • goferking (he/him)@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Edit: Just noticed I’m on the blocklist. What he said fuck me for?

      Figuring this out has been interesting, but then again based on that user could have just said something they didn’t like in a random thread so they put you on the list

      • teslekova@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        No, it’s a particular type of liberalism. Freedom of speech is actually a core liberal value, and while some who think themselves liberal will use censorship, (usually political hacks doing it for political ratfuckery, like the dev of Tesseract) most do not.

        • cavitationfetishist2@quokk.au
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          No. They say that shit, they say they have values beyond the class system and terror and feeling good about themselves for doing it, but shitlibs are liars.

          Every single one, when pressed, is an authoritarian first. They fucking fetishize that shit. Everything else is just painted on.

          • SlurpingPus@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 months ago

            No. They say that shit, they say they have values beyond the class system and terror and feeling good about themselves for doing it, but shitcommies are liars. Every single one, when pressed, is an authoritarian first. They fucking fetishize that shit. Everything else is just painted on.

      • prole@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        I’m curious what makes them liberal not conservative? Why do you immediately jump to liberal, when every thing I’ve seen that’s been blocked has been shit that triggers conservatives.

        I get that you have to shoe horn your “everything bad is liberal” shit into everything, but this ain’t it chief.

        Before you accuse me of the same bullshit, I’m on the block list.

      • cloudskater@piefed.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Liberals are nothing more then centrists and can suck eggs for all I care but jeez, could you offer comments that were any more useless and rage-baity then this?

        • cavitationfetishist2@quokk.au
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Ikept getting told to ‘shut up cunt’ in this thread and mods seemed fine with it. So I’m explaining myself in detail.

          And libs aren’t centrists, except maybe between Ronald Reagan and the Thule society.

      • GregorGizeh@lemmy.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Why do you keep repeating this throughout these comments chief?

        Being self important is not a political act and so far there is no indication of a political motivation, just that the dev somehow got the idea of appointing themselves secret online discourse admin. If it turns out there is some financial goal behind it i’m with you tho.

        • cavitationfetishist2@quokk.au
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          being self important is not a political act

          Citation needed.

          financial goal

          I didn’t say capitalism I said liberalism.

            • Aceticon@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              2 months ago

              American style “liberalism” (aka Neoliberalism) is exactly the opposite of that:

              • Everything must be behind a money-gate (everything must be private, nothing public) and only if you have enough money can you pass such a gate
              • Unless you’re born on the right side of the gate or from parents with enough money, you can only get the money to pass most money-gates (even just the ones for food and for shelter) by working for the people with enough money to pass ownership-of-means-of-production & land-ownership money-gates.

              It’s a structure to heavilly reduce freedom in the most important aspects of one’s life including things necessary for survival (like food and shelter), not to increase it, so it’s the very opposite of increasing Liberty or Freedom.

              I reckon that’s the kind of “Liberalism” (which is the only one with political power anywhere in the World at the moment as far as I can tell, since there sure aren’t any politicians in power anywhere which both claim to be Liberal and are against core liberty-reducing legislation such as Private Land Ownership) that the previous poster is talking about.

              Mainstream politicians out there who call themselves “Liberal” are 100% liars and frauds.

  • mmmm@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    fwiw I’d recommend photon, it’s fantastic and the dev seems to work really hard on it. Hope they aren’t doing something shady either!

  • dual_sport_dork 🐧🗡️@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    The developer behind Tesseract is the same user who has displayed the habit of preemptively banning users who have never participated in or even visited his communities, particularly those that were on dubvee.org. Apparently for ideological reasons, or simply for being associated with a particular Lemmy instance.

    So at the risk of stirring up even more Fediverse drama by saying it, it seems like the findings above are squarely on brand.

    Not to come over all Graham Chapman about it or anything, but I always found that type of behavior to be very silly.

  • Rimu@piefed.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    It looks like there is an ‘enable toxic mode’ setting that DOES switch off the auto-updating blocklist. The LLM that wrote this post claimed that there is no way to turn it off.

    from src/lib/policies/system.ts:

    export async function updateSystemFilterPolicy() {  
        if (SBDisabled && get(userSettings).enableToxicMode) {  
            SYSTEM_POLICY.set(BLANK_SYSTEM_FILTER_POLICY)  
            return  
        }  
       // auto-update of blocklist continues below  
    

    The original post was written using AI so it’s going to have a lot of inaccuracies like that.

    Overall though, this does seem poorly documented, too opaque and overly prescriptive. And needlessly encrypting the payload looks shifty.

      • ScoffingLizard@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        The question is how to prevent toxic material that brainwashes people like Facebook did. It irreparably damaged the social fabric in my country.

        (Don’t know the answer)

    • prole@lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Yeah it’s the trans people who simply want to exist who are toxic

      Edit: no indication any of that post was LLM, but would love to hear why you think that.

      Though I suspect that’s just a tactic to get people to shift their ire.

      • subignition@fedia.io
        link
        fedilink
        arrow-up
        0
        ·
        2 months ago

        Hi, not the person you replied to, and (edit: not*) agreeing with any of this blocklist shit, AND my ire is firmly not shifted away from Tesseract, but just wanted to break down the characteristics of the OP that suggest (to me) it was composed mostly with an LLM and fine tuned after. (Though to be clear, that’s a pretty unimportant characteristic of the post considering the actual content)

        1. The division of the text into small “sections” of five or fewer short paragraphs separated by headers is probably the most obvious hallmark.

        2. Kind of difficult to put into words, but abrupt / awkward / overly poetic metaphor and… “overconfident”? “sensationalized”? phrasing both give me an LLM vibe. examples:

        It’s a policy decision dressed as an API error, and it’s what had db0 chasing a version mismatch that never existed.

        I went through the code to see how that was implemented. The hardcoded list turns out to be the small half of the system.

        The spam work is what makes the rest unauditable: “it’s a spam list” answers every individual question and none of the whole.

        It’s downloaded at runtime from a file nobody has ever looked at.

        spam filtering and political editorial got welded into one undocumented, remotely-updatable blob, shipped hidden

        That’s the licence working as designed. But forking isn’t disclosure, and the admins who need this are precisely the ones with no reason to go looking.

        1. Overuse of the rule of three. This one is probably the most tenuous, because genuine human writing does make frequent use of the rule of three. But when LLMs do it, it’s usually at a high enough density where it starts sounding like it’s trying too hard, or it’s clickbaity.

        Admins can’t see it, can’t configure it, and aren’t told it’s there.

        That’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks.

        There are Mastodon and Friendica accounts in there: people who have never used Lemmy, hidden by a Lemmy frontend, with no possible way of finding out.

        355 of the 552 usernames are plain alphabetic, twelve characters or under, median length eight.

        For the hidden users, communities and keywords, you get no message at all.

        Self-host it and you cannot disable this, nothing in your config admits it exists, and the contents can change without you pulling a commit.

        If you run Tesseract, you are relaying a 111KB moderation policy you have never read, under your instance’s name, to users who don’t know it exists.

        1. Tonally inconsistent with the intended audience. I realize Lemmy/Fediverse users are more technically savvy than usual, but even then… consider the claim “I went through the code to see how that was implemented.” early in the post. A lot of plausible technical jargon is used, and there are plenty examples of the actual filters and filter patterns themselves, but the post makes claims about what is happening without really being specific at all about how.

        Could be explained by me just not being familiar enough with the technical side, but saying stuff like “There’s a second filter policy fetched over HTTP every time the app loads” without breaking it down any further seems a bit suspicious to me? It doesn’t actually call out any function, file, or… i dunno, a logical starting point, for a competent reader to dig into the source themselves. Reads like it’s written for either an expert who doesn’t need any details, or for an audience with zero skepticism whatsoever.

        1. And least importantly, because my focus is on the presentation of the post moreso than the accuracy, IF rimu’s read of the code is correctly calling out a factual error in the OP (and let me be clear that I’m not enough of a programmer to evaluate whether it is), that is pretty strong evidence of an LLM getting something wrong.

        Again… this wall of text isn’t meant as a refutation of anything you’re saying, or a reason to dismiss the contents of the OP uncritically. Seems pretty clear after reading through db0’s posts about it that this is seriously fucked up. I hope I’ve been clear enough about that.

        • Zawaj_Al_Qasirat@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Could be explained by me just not being familiar enough with the technical side, but saying stuff like “There’s a second filter policy fetched over HTTP every time the app loads” without breaking it down any further seems a bit suspicious to me? It doesn’t actually call out any function, file, or… i dunno, a logical starting point, for a competent reader to dig into the source themselves. Reads like it’s written for either an expert who doesn’t need any details, or for an audience with zero skepticism whatsoever.

          It gives you the file directly

          curl -s https://tesseract.dubvee.org/tesseract/api/system/policy
          | base64 -d | gunzip > policy.json

            • Zawaj_Al_Qasirat@sh.itjust.works
              link
              fedilink
              English
              arrow-up
              0
              ·
              2 months ago

              ./Dockerfile:14:COPY --chown=node:node static/data/policy.dat /app/system/policy/policy.dat
              ./src/lib/policies/system.ts:105: res = await fetch(‘/data/policy.dat’)
              ./src/server/system.ts:27: let file = await open(${policyDir}/policy.dat)
              ./src/server/system.ts:71: await writeFile(${policyDir}/policy.dat, policy)

              • ripcord@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                2 months ago

                But none of those are the remotely fetched file.

                There seems to ALSO be a statically included policy file with a bunch of stuff. That he updates periodically.

                • subignition@fedia.io
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  2 months ago

                  Give them a little credit, they were only five lines away from a bullseye in their second example. That’s much closer to accurate than their overall comprehension of my post was

              • subignition@fedia.io
                link
                fedilink
                arrow-up
                0
                ·
                2 months ago

                Thanks, but I’m not sure what value you think you’re adding by actually going and finding that - if you had understood my post, you would know that my critique of the lack of specifics in the OP was a reason to doubt it was written by a human, not anything to do with whether or not the details of the post were credible or not.

        • null@piefed.nullspace.lol
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          5 month old account on a free-registration instance that actively and only downvotes.

          Or what we like to call, the cowards alt.

        • prole@lemmy.blahaj.zone
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          I didn’t know they were an established transphobe, so I wanted to give some benefit of the doubt.

          But yeah, all signs pointed to that fact.

      • BillyClark@piefed.social
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        On the LLM thing, there are tools that can say the likelihood that any given text was written by an LLM. Apparently, they’re a necessity for English teachers these days. So, it’s possible that Rimu used a tool like that.

        • subignition@fedia.io
          link
          fedilink
          arrow-up
          0
          ·
          2 months ago

          Unfortunately (or hilariously depending on your perspective) those tools are notoriously inaccurate and often driven by LLMs themselves.

  • dohpaz42@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    This is the beauty and downside to open source. Anybody can force their political views in their software. But once discovered, it can be forked and fixed.

    It’s a shame that everything has become so politicized that people feel the need to shove their religious political beliefs down everyone else’s throats. Yeah, we all know who the Bad Guys™ are; we don’t need to be constantly reminded.

    Give users their voices back (or at least choice in what they want to see and block). It’s the decent thing to do. Anything else makes you a certified asshole.

    I said what I said.

    • MisterFrog@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      Give users their voices back (or at least choice in what they want to see and block)

      This is why I think that dev is 100% in the wrong. They made it obscure, and default, for a reason: because they can’t bear to read a political opinion online, or that they’re happy someone responsible for untold number of people (Luigi’s alleged victim) is dead (normal, empathetic human response to someone evil dying).

      You’re right, individuals should be able to choose who to block (which Lemmy already lets you do!)

      I’m glad this dev has been exposed.

      It’s a shame that everything has become so politicized that people feel the need to shove their religious political beliefs down everyone else’s throats. Yeah, we all know who the Bad Guys™ are; we don’t need to be constantly reminded.

      A huge problem is widespread political disengagement. It’s not a shame everything has gotten so politicised, it’s a shame how much worse inequality and consolidation of power has become. And things are getting worse and worse. Sorry, the only solution to this is to build a movement of people to push back, and reverse this. It can’t be achieved by a handful of people.

      People do need to be reminded. People do need to get their message out there.

      We don’t need to talk about bad things all day every day, but honestly, the amount of people who talk politics and are geting organised to do something is way, way, way too low.

    • jafra@slrpnk.net
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      Well this is also what the offending dev accuses some mods. I would love to join your stone throwing, but i also think there are some truths. Libs and Commies and Queers all can react overly hostile and not seldomly react disproportionate (all 3 of them, not every last queer person). Aaand i think the dev is butt hurt, but if he chooses an unreasonable way to react we can be glad to leverage FOSS.

      • Zorque@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        All propaganda has some element of truth to it, thats how they trick you into thinking its wholly believable.

        Surface level honesty does not presuppose that same honesty at depth.

  • WesternInfidels@feddit.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    So a system named after a hypothetical, hyper-dimensional solid turns out to have hidden depths, secret facets that we can’t see from our universe?