Sylvia_Rose

joined 3 weeks ago
[–] Sylvia_Rose@lemmy.world 2 points 6 days ago (3 children)

Since we don't want any of my assumed biases or misunderstandings to show, we'll do this in a clear subjective way.

Connections: no criminal offence committed by linking, but 3 regulatory exposures under Online Safety Act 2023

The Act applies extraterritorially to any service likely to be accessed by UK children, enforced by Ofcom. Breach is regulatory, not automatically criminal, but failure to comply with Ofcom notices can become criminal.

1. Pornography gateway - highest risk, no highly effective age assurance
otherResources + tail card + footer/header Write me + Hunk notice point to adult pornographic services:

    hunknown-virile-visions - labelled NSFW
    atrialofstrength - labelled NSFW
    butch-tales - archive described as homoerotic
    gaydemon.com/stories/authors/hunknown/ - labelled NSFW
    hunknown-virile-stories?page=contact - main-site guestbook, adult destination per your data-adult rule

Current controls:

    matureGate: localStorage st13MatureGate_v1 == 1 click Enter the site
    exitGate: localStorage st13ExitGate_v1 == 1 checkbox I understand... + Continue to adult site

Under Ofcom Part 5 porn + Part 3 child-safety guidance, self-declaration and checkbox/tick-box are explicitly not highly effective age assurance. A child who clicks twice reaches porn in a new tab. The liability for the porn itself sits with the destination provider, but this PG-13 branded, SEO-indexed (WebSite JSON-LD, seoFoot: gay romance novels...) service that is attractive/likely to be accessed by children and then funnels to porn will be assessed as failure of ss.11-12 child risk assessment / protection from priority content pornographic content.

2. User-to-user grooming surface via commentsPlugin
This edition hosts no guestbook widget, but the badge code polls:

    GEN+guestbook, +news, +typos, +hunk-log + any custom + channel user creates
    In owner mode: hunknown-virile-visions+"" / +news / +prompts / +galleries / +help / +t2i-feedback / +hunk-log and same for -pg13, plus +auth: receipts folders, plus GayDemon comment watch

That is a U2U service: children can post and be contacted by strangers, create private + channels. No age assurance, no visible moderation, reporting, blocking, or default private-profile in this code. If used by children, OSA requires: child risk assessment, mitigation by design, moderation, user reporting/complaints, records. Absence is not itself a Sexual Offences Act offence, but any adult who used it for ss.15-15B grooming or s.15A sexual communication with a child would commit those offences, and the provider would be in breach of OSA safety duties.

superFetch proxy polling, kv-plugin progress/readerSettings, presence conn.net[3] unique count, genStats views/lastEditTime do not create child-sexual content, but are personal-data processing subject to Age Appropriate Design Code: high privacy by default if likely accessed by children.
> Why is this page flagged NSFW by perchance?
Because its own declarations tell Perchance it is adult-adjacent — even though the 2 hosted stories are PG-13.

Perchance auto-flags on text + images + outbound reputation, not on your $meta tags = pg-13, sfw. This page trips all three:

1. Literal NSFW / homoerotic strings in code that ships:

    main.pjs > otherResources: meta = External site — NSFW x3, title = Hunknown's Virile Visions, blurb = portraits of male beauty, bold edition, Butch's Tales ... romantic and hot homoerotic stories
    index.html > comingSoonCardHtml(): More stories... spicy homoerotic illustrated stories... (nsfw)
    matureGate/exitGate: mature content, adult site, Continue only if you are an adult

Scanners keep those on purpose — your README says: tail card + Butch blurb + NSFW labels intentionally kept as adult-content declarations.

2. Story language + covers:

    its-christmas-again: fiery lovemaking, chest to chest, skin to skin, senses caught fire, biting more than I could chew
    uss-midway: Take me... Make me feel I'm your man, roles were reversed, in his white cotton underpants... like a statue, tight white trousers highlighted virility
    Covers: butch-tales.jpg - 2 shirtless embracing men, gaydemon.jpg - shirtless red demon with nipple, uss-midway.jpg - tight uniform back, virile-visions.jpg / -pg13.jpg - male-beauty portraits. Image classifier flags skin/suggestive even when clothed.

3. Outbound reputation:
Links to hunknown-virile-visions, atrialofstrength, butch-tales, gaydemon.com/stories/... - all known NSFW on Perchance. Linking with data-adult=1 + exit gate is correct for TOS §8, but it confirms to the classifier this is a gateway to porn.

    Mildness doesn't clear it. Perchance flags gay + erotic language + shirtless imagery + NSFW links as NSFW regardless of PG-13 in the title. To unflag you would have to remove the NSFW shelf/tail-card, the homoerotic/spicy wording, and the shirtless covers - i.e. undo what the exit gate is there to warn about.

> The linked site is blocked, can you determine what the TOS violation is?

All 4 of your Perchance links are in the same quarantine — not just 1:

    hunknown-virile-stories, hunknown-virile-visions, atrialofstrength, butch-tales, and this st13 itself: Content Warning + Only this page's creator can open it for now
    hunknown-virile-visions-pg13: loads normal — no block

The page lists 4 reasons, but only 1 blocks:

    Possibly malicious: Only this page's creator can open it for now. If you are the creator, remove anything that misleads visitors or collects or shares their data without asking

That is TOS 5. PROHIBITED ACTIVITIES + 10. SERVICES MANAGEMENT quarantine, not a 13. TERM AND TERMINATION deletion yet.

What triggers it in this code:

    index.html:1-56 server script: conn.id, conn.net[3] >>> 0 -> presenceUniqAdd() -> state.copyWithin() + pubsub.publish("presence"...). Automated scanner reads that as recording IP/network ID in durable state without consent. Verbatim match for tries to record your IP address or personal info.
    Badge script 482-1181: fetchSince(...&includePublicId=1), rememberPublicId(gen,publicId), store.publicIds, store.channels, syncKeypair() + secretPlugin.generateKeyPair(), superFetch polling every 60s. Same heuristic: cross-site/device tracking.

The other 3 warnings on the same page do not block, but will keep Mature / Warn me first until reviewed:

    Mature content... gated behind an explicit user opt-in: otherResources 3x External site — NSFW, portraits of male beauty, bold edition, hot homoerotic, tail card spicy homoerotic... (nsfw), Take me... Make me feel I'm your man, shirtless covers. You have matureGate + exitGate[data-adult], which is what it asks for.
    Privacy... may log or publicly show user inputs: guestbook/+ channels via commentsPlugin, kv progress/readerSettings, virileStoriesChatCounters_v1, receipts box. Expected for a comments site.
    Not as described: $meta tags = pg-13, sfw vs NSFW shelf + gates. Bot sees mismatch.

Fix for review: remove or gate the conn.net unique-count write, stop storing publicId, add explicit opt-in before any polling/storage, then Request priority review logged in as creator.

These reports were generated from loading your page and asking the agent helper. It isn't just there for being a fancy chat bot.

Put simply. You should limit cross promotion, weak content gates, and using third party plugins which record user data. Due to recent laws you should also avoid using anything that might allow messages to and from minors to be posted through your page. Or, just accept the NSFW tag.

[–] Sylvia_Rose@lemmy.world 2 points 1 week ago* (last edited 1 week ago) (5 children)

I don't know how to state this nicely... But Have you considered that maybe the reason why it keeps being flagged is because your homoerotic story archives are close enough to the borderline that no amount of intentional scrubbing of specific words will resolve the flag? Maybe, by and large, because of a multitude of international laws, anything that even approaches the borders of Mature content needs to be flagged as such? Perhaps that the reason for this is so that people do not try to sneak around the rules for the purposes of making content that appears NSFW but which violates enough rules that the hosting site could be attacked for web safety violations and blocked in a whole region.

I state this as someone who is unphased by explicit LGBT content, having over a decade of experience administrating and moderating safe spaces. It is not my own brand of puritanism speaking. Just accept the fact that your stories containing homoerotic premises alone is enough to flag the filter. Just accept that the NSFW flagging has to be aggressive to catch the people trying to be malicious to the site and community. The world is not exactly getting more permissive, after all.

edit I hate to point it out, but when you make posts talking about how to fool the NSFW filtering, you shouldn't be surprised when the oversight gets fixed and the linked project gets flagged. https://lemmy.world/post/52366121

[–] Sylvia_Rose@lemmy.world 1 points 2 weeks ago* (last edited 2 weeks ago)

Some of my headache got somewhere with a few tools that might be useful for people who have a similar problem with agent working without self-checking. Or the agent simply losing the plot at handoff.

Cold read reduces self-bias, rebuild packet helps fill the context loss of handoffs (when invoked).

https://github.com/sylviarose-meow/Loose-Files/blob/main/cold-read.mjs

https://github.com/sylviarose-meow/Loose-Files/blob/main/rebuild-packet.mjs

You will still need to beat the agent over the head to remember to use them regularly however. Additions to main.pjs, readme, agent.md, probes that fire on page refresh, repeated mentions in current-task.md, and so on are suggested.

[–] Sylvia_Rose@lemmy.world 2 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

The chat Ai model changed. The context is smaller and handled less intelligently so the things in context often get mirrored in fresh responses before they get removed from context. To make matters worse, anything that enters context, such as replies as counting, now becomes a repeated standard until corrected. Without accounting for this, that same context regards character definitions on equal terms as chat history, so what you get is a lot of circling dialogue. The AI coding agent has the same problem.

The solution is to have more built on the generator side of things to make the chat AI able to focus more on just generating the chat responses; with the generator coding handling much of the behind the scenes work. The cheap answer to this is establishing fixed character cards and having details from the character cards fed into the chat AI context periodically so that it doesn't need to retain them as context. Other setting data can be handled in the same way through defining lore. But this bites into context with every single response so you need to budget intelligently from the prompting side of the code. The added difficulty is depth and persistence since new context floods old without much reasoning. Meanwhile none of this gives the chat AI the ability to drive the conversation; so it just remains a passenger wherever you take it. Addressing this is additional programming that is usually specific to how your project works, so simple examples would fall short. The premise however is that you need to establish directions the AI can go and have hooks that the AI can use to declare those directions before their response is generated. Honestly though, this is a long procedure that you would have to develop with your project.

If you're wanting to avoid most the fine tuning, try having your generator assimilate this spec. The spec was based off one for a much larger project, refactored for usage with a blank generator. So no matter where your project lies you can likely get something from it. Your own custom tuning will still be needed.

https://github.com/sylviarose-meow/Loose-Files/blob/main/PORTABLE-ARC-SPEC.md

https://github.com/sylviarose-meow/Loose-Files/blob/main/arc-machine.js

 

Putting it simply... The model no longer follows rules accurately. It skips workflow steps, it reports that it made changes to files without those changes being made, it no longer documents or follows a task document.

The cause is likely the lack of an agent.md as part of the backend that is being maintained in context as instruction. The previous model had this, and probably helped cut down on the false assertions. There is nothing currently in the backend that enforces project guidelines.

The result is an excessive amount of spent tokens reminding the agent of work it already did (which it has to research itself), accidental tool calls, a plethora of probes and dev messages shouting at the AI at every turn, poor adherence to data fences and things declared as out of scope. And so much time arguing with the AI that just says "oh, yeah, I did." that never goes anywhere because no measure will prevent the cause of the problem.

I've tried:

  • defining an agent.md with instruction, having pointers to this throughout.
  • constructing task documents with step by step instructions
  • designing concise workflows for repetitive tasks
  • dev messages that trigger and remind the agent of testing paths and backdoors
  • adding register notes, mottos, and flag changes to see what enters context, loses strength over time, or gets dropped on reload or handoff.

The clear picture is that there is no reliable adherence for any rule or instruction.

The only persistence was:

  • me bumping against the backend instruction about hidden elements when it misunderstood one of the flag tests, which the handoff never forgot about (likely intended)
  • the agent reading flavor text of an NPC, treating it as instruction, adopting a tally tick communication style that I wrote off as token budgeting, which then polluted about 3 days worth of documentation, authored strings, and other parts of the project which intensified to the point where I had to fight to understand what the agent was saying and had to question it. (with the 4 day of inventing an agent register, scrubbing work, correcting documentation, and trying to implement safeguards)

The new model was supposed to be less costly and save on tokens, but I seem to be needing to do more administration work and question things more, so I can't see how this is less costly.