Bekende verrassingen
Dit bestand houdt repository-specifieke verwarringspunten bij die tot fouten van agents hebben geleid.
Criteria voor een vermelding
Voeg alleen een vermelding toe als alle onderstaande punten kloppen:
- Het is specifiek voor deze repository (geen algemeen advies).
- De kans is groot dat toekomstige agents er opnieuw tegenaan lopen.
- Er is een concrete mitigatie die te volgen is.
Vraag het bij twijfel eerst aan de ontwikkelaar voordat je een vermelding toevoegt.
Sjabloon voor een vermelding
### [Short title]
- **Date:** YYYY-MM-DD
- **Observed by:** agent name or contributor
- **Context:** where/when it happened
- **What was surprising:** concrete unexpected behavior
- **Impact:** what went wrong or could go wrong
- **Mitigation:** exact step future agents should take
- **Status:** confirmed | superseded
Vermeldingen
Productiedomeinen van Vercel-apps kunnen terugvallen op deployments vanaf Git-master
- Datum: 2026-04-28
- Waargenomen door: Tommaso + Codex
- Context: Het verifiëren van de Seedit- en 5chan-appmirrors in de appdirectory van Bitsocial Web.
- Wat verrassend was: De Vercel-projecten
seediten5chanhaddengitProviderOptions.createDeployments = "enabled", waardoor pushes naarmasterop GitHub werden gepromoveerd naar de productiedomeinen, terwijl het repositorybeleid verwacht dat productiemirrors van apps uitsluitend release-artefacten serveren. - Impact: Badges voor geverifieerde mirrors in de appdirectory kunnen onjuist worden, doordat de productiedomeinen de nieuwste ontwikkelcommit serveren in plaats van de GitHub-release-ZIP waarvan de
index.html-hash is vastgelegd inabout/src/lib/apps-data.ts. - Mitigatie: Controleer het Vercel-project met
vercel api /v9/projects/<project-id>voordat je verificatiemetadata voor mirrors toevoegt of ververst, en bevestiggitProviderOptions.createDeployments = "disabled". Deploy de inhoud van de release-ZIP metvercel deploy --prebuilt --proden gebruikseedit-omega.vercel.appof5chan-omega.vercel.appvoor ontwikkeldeployments. - Status: bevestigd
Portless 0.11 hergebruikt oude proxystatus tenzij de launcher HTTPS afdwingt
- Datum: 2026-04-28
- Waargenomen door: Tommaso + Codex
- Context: Het omzetten van de normale
yarn start-flow van de oude proxy-URLhttp://bitsocial.localhost:1355naarhttps://bitsocial.localhost. - Wat verrassend was: Zelfs met
portless@0.11.1geïnstalleerd hergebruikte Portless de bestaande HTTP-proxy op~/.portless/proxy.port = 1355en toonde het de oude:1355-URL. - Impact: Pakketversies en documentatie bijwerken is niet genoeg;
yarn startkan de oude URL nog steeds tonen en gebruiken wanneer een bijdrager oude Portless-status draaiend heeft. - Mitigatie: Zorg dat de startscripts de Portless HTTPS-proxy expliciet op poort
443starten voordat app-routes worden geregistreerd, zodat de runtime-flow wegmigreert van de opgeslagen1355-status in plaats van die over te nemen. - Status: bevestigd
Portless verandert de canonieke lokale app-URL
- Datum: 2026-03-18
- Waargenomen door: Codex
- Context: Browserverificatie en smoke-flows
- Wat verrassend was: De standaard lokale URL is niet de gebruikelijke Vite-poort. De repository verwacht
https://bitsocial.localhostvia Portless, dus het controleren vanlocalhost:3000oflocalhost:5173kan de verkeerde app treffen of helemaal niets. - Impact: Browsercontroles kunnen mislukken of het verkeerde doel valideren, zelfs wanneer de dev-server prima draait.
- Mitigatie: Gebruik
https://bitsocial.localhostals eerste keuze. Omzeil dit alleen metPORTLESS=0 corepack yarn startwanneer je expliciet een directe Vite-poort nodig hebt. - Status: bevestigd
Commitizen-hooks blokkeren niet-interactieve commits
- Datum: 2026-03-18
- Waargenomen door: Codex
- Context: Agentgestuurde commit-workflows
- Wat verrassend was:
git commitstart Commitizen via Husky en wacht op interactieve TTY-invoer, waardoor niet-interactieve agent-shells blijven hangen. - Impact: Agents kunnen eindeloos vastlopen tijdens wat een gewone commit zou moeten zijn.
- Mitigatie: Gebruik
git commit --no-verify -m "message"voor commits die door agents worden gemaakt. Mensen kunnen nog steedscorepack yarn commitofcorepack yarn exec czgebruiken. - Status: bevestigd
Corepack is nodig om Yarn classic te vermijden
- Datum: 2026-03-19
- Waargenomen door: Codex
- Context: Migratie van de pakketbeheerder naar Yarn 4
- Wat verrassend was: De machine heeft nog altijd een globale installatie van Yarn classic in
PATH, waardoor een kaalyarn-commando naar v1 kan verwijzen in plaats van naar de vastgezette Yarn 4-versie. - Impact: Ontwikkelaars kunnen per ongeluk de pakketbeheerderpinning van de repository omzeilen en ander installatiegedrag of andere lockfile-uitvoer krijgen.
- Mitigatie: Gebruik
corepack yarn ...voor shell-commando's, of voer eerstcorepack enableuit zodat een kaalyarnnaar de vastgezette Yarn 4-versie verwijst. - Status: bevestigd
Vaste Portless-appnamen botsen tussen Bitsocial Web-worktrees
- Datum: 2026-03-30
- Waargenomen door: Codex
- Context:
yarn startstarten in de ene Bitsocial Web-worktree terwijl een andere worktree al via Portless serveerde - Wat verrassend was: Door in elke worktree de letterlijke Portless-appnaam
bitsocialte gebruiken, botst de route zelf, zelfs wanneer de onderliggende poorten verschillen. Het tweede proces mislukt dan omdatbitsocial.localhostal geregistreerd is. - Impact: Parallelle Bitsocial Web-branches kunnen elkaar blokkeren, terwijl Portless juist bedoeld is om ze veilig naast elkaar te laten bestaan.
- Mitigatie: Houd het starten van Portless achter
scripts/start-dev.mjs, dat inmiddels buiten het canonieke geval een branch-specifieke*.bitsocial.localhost-route gebruikt en terugvalt op een branch-specifieke route wanneer de kale naambitsocial.localhostal bezet is. - Status: bevestigd
De docs-preview had poort 3001 hard-coded
- Datum: 2026-03-30
- Waargenomen door: Codex
- Context:
yarn startdraaien naast andere lokale repositories en agents - Wat verrassend was: Het dev-commando in de root draaide de docs-workspace met
docusaurus start --port 3001, waardoor de hele dev-sessie mislukte zodra een ander proces3001al in gebruik had, ook al gebruikte de hoofdapp al Portless. - Impact:
yarn startkon het webproces meteen na het opstarten afbreken en zo ongerelateerd lokaal werk onderbreken vanwege een botsing om de docs-poort. - Mitigatie: Houd het starten van docs achter
yarn start:docs, dat inmiddels Portless plusscripts/start-docs.mjsgebruikt om een geïnjecteerde vrije poort te respecteren of terug te vallen op de eerstvolgende beschikbare poort bij directe uitvoering. - Status: bevestigd
De vaste Portless-hostnaam voor docs was hard-coded
- Datum: 2026-04-03
- Waargenomen door: Codex
- Context:
yarn startdraaien in een tweede Bitsocial Web-worktree terwijl een andere worktree de docs al via Portless serveerde - Wat verrassend was:
start:docsregistreerde nog steeds de letterlijke hostnaamdocs.bitsocial.localhost, waardooryarn startkon mislukken hoewel de about-app al wist hoe ze route-botsingen in Portless voor haar eigen hostnaam moest vermijden. - Impact: Parallelle worktrees konden het dev-commando in de root niet betrouwbaar gebruiken, omdat het docs-proces als eerste stopte en
concurrentlydaarna de rest van de sessie afsloot. - Mitigatie: Houd het starten van docs achter
scripts/start-docs.mjs, dat inmiddels dezelfde branch-specifieke Portless-hostnaam afleidt als de about-app en die gedeelde publieke URL injecteert in het doel van de/docs-dev-proxy. - Status: bevestigd
Worktree-shells kunnen de vastgezette Node-versie van de repository missen
- Datum: 2026-04-03
- Waargenomen door: Codex
- Context:
yarn startdraaien in Git-worktrees zoals.claude/worktrees/*of naastgelegen worktree-checkouts - Wat verrassend was: Sommige worktree-shells losten
nodeenyarn nodeop naar Homebrew Node25.2.1, terwijl de repository22.12.0vastzet in.nvmrc. Daardoor konyarn startde dev-launchers stilzwijgend onder de verkeerde runtime draaien. - Impact: Het gedrag van de dev-server kan verschillen tussen de hoofdcheckout en worktrees, waardoor bugs moeilijk reproduceerbaar worden en de verwachte Node 22-toolchain van de repository wordt geschonden.
- Mitigatie: Houd de dev-launchers achter
scripts/start-dev.mjsenscripts/start-docs.mjs, die zichzelf inmiddels opnieuw uitvoeren onder de Node-binary uit.nvmrcwanneer de huidige shell op de verkeerde versie staat. De shell-configuratie zou nog steedsnvm usemoeten verkiezen. - Status: bevestigd
Restanten van docs-site/ kunnen na de refactor verhullen dat docs-bronbestanden ontbreken
- Datum: 2026-04-01
- Waargenomen door: Codex
- Context: Opruimen van de monorepo na de merge, nadat het Docusaurus-project van
docs-site/naardocs/was verplaatst - Wat verrassend was: De oude map
docs-site/kan op schijf achterblijven met verouderde maar belangrijke bestanden zoalsi18n/, zelfs nadat de getrackte repository naardocs/is verhuisd. Daardoor lijkt de refactor lokaal gedupliceerd en kan verborgen blijven dat getrackte docs-vertalingen nooit echt naardocs/zijn verplaatst. - Impact: Agents kunnen de oude map als “rommel” verwijderen en per ongeluk de enige lokale kopie van de docs-vertalingen kwijtraken, of scripts blijven bewerken die nog naar het dode pad
docs-site/verwijzen. - Mitigatie: Behandel
docs/als het enige canonieke docs-project. Herstel getrackte bronbestanden zoalsdocs/i18n/voordat je lokale restanten vandocs-site/verwijdert, en werk scripts en hooks bij zodat ze niet langer naardocs-siteverwijzen. - Status: bevestigd
De multilocale docs-preview kan tijdens verificatie veel RAM opslokken
- Datum: 2026-04-01
- Waargenomen door: Codex
- Context: Docs-i18n, locale-routing en Pagefind-gedrag repareren met
yarn start:docsplus Playwright - Wat verrassend was: De standaard previewmodus voor docs doet inmiddels een volledige multilocale docs-build plus Pagefind-indexering voordat er wordt geserveerd. Dat proces draaiend houden naast meerdere Playwright- of Chrome-sessies kan veel meer RAM verbruiken dan een normale Vite-lus of een Docusaurus-devlus voor één locale.
- Impact: De machine kan geheugenkrap raken, browsersessies kunnen crashen, en afgebroken runs kunnen verouderde docs-servers of headless browsers achterlaten die geheugen blijven opslokken.
- Mitigatie: Kies voor docs-werk dat geen verificatie van locale-routes of Pagefind vereist liever
DOCS_START_MODE=live yarn start:docs. Gebruik de standaard multilocale preview alleen wanneer je vertaalde routes of Pagefind moet valideren. Houd één Playwright-sessie aan, sluit oude browsersessies voordat je nieuwe opent, en stop de docs-server na de verificatie als je die niet meer nodig hebt. - Status: bevestigd
translate-docs.py kan docs-locales half vertaald of met kapotte linkdoelen achterlaten
- Datum: 2026-04-06
- Waargenomen door: Codex
- Context: Gelokaliseerde docs-routes en -inhoud repareren nadat
yarn start:docsEngelse detailpagina's serveerde of geen locale-uitvoer kon bouwen - Wat verrassend was: De vertaalpijplijn voor docs had twee repository-specifieke faalwijzen tegelijk:
scripts/translate-docs.pyhaalde slechts een kleine subset van deDocsHome-teksten op wanneertr(...)-aanroepen vormen gebruikten die het script niet kon parsen, en de vertaalde markdown onderdocs/i18n/**kon machinaal vertaalde slugs ofZXQPLACEHOLDER-resten in linkdoelen bevatten. - Impact: Gelokaliseerde homepages kunnen stilzwijgend terugvallen op het Engels, gelokaliseerde detailpagina's kunnen onvertaald lijken, en een volledige
yarn docs:buildkan stuklopen op kapotte locale-links terwijl de brondocumentatie zelf geldig is. - Mitigatie: Voer na het wijzigen van docs-vertalingen of het opnieuw genereren van locale-bestanden altijd
yarn docs:builduit vanuit de root van de repository, scan de markdown onderdocs/i18n/**opZXQPLACEHOLDER, en controleer of vertaalde links nog naar canonieke doc-slugs zoals/apps/5chan/verwijzen in plaats van naar vertaalde URL-paden. Bevestig bij gewijzigdeDocsHome-teksten datscripts/translate-docs.pynog steeds alledocs.home.*-berichten ophaalt. - Status: bevestigd
No-JS-controles van de about-site moeten de Portless-route gebruiken, niet een losstaande SSR-preview
- Datum: 2026-04-12
- Waargenomen door: Codex
- Context: No-JS-ondersteuning verifiëren voor de site in
about/vanuit een branch-worktree - Wat verrassend was: Een losstaande SSR-preview kan er gezond uitzien terwijl de daadwerkelijke branch-specifieke Portless-route nog de verkeerde app-shell of een ouder proces serveert. In deze repository is het echte lokale contract de Portless-hostnaam uit
yarn start, niet een ad-hoc previewserver. - Impact: Agents kunnen ten onrechte beweren dat no-JS-ondersteuning werkt, of regressies missen die zich alleen op
*.bitsocial.localhostvoordoen. - Mitigatie: Start voor browserverificatie van
about/altijd de echte lokale server metyarn startofyarn start:abouten test eerst de branch-specifieke Portless-URL. Als een Portless-hostnaam verouderd lijkt, inspecteer dan het oude proces en stop het voordat je opnieuw test. - Status: bevestigd
chain/ was onzichtbaar voor yarn build:verify en yarn doctor
- Datum: 2026-07-05
- Waargenomen door: Codex
- Context: Een diff met alleen wijzigingen in chain/ verifiëren nadat de workspace
chain/(een op zichzelf staande Vite-app voorchain.bitsocial.net) aan de monorepo was toegevoegd. - Wat verrassend was:
scripts/verify-build.mjsherkende alleen de padprefixenabout/,docs/enstats/, waardoor een diff met alleen chain/-wijzigingen "No targeted build checks matched the current diff" printte en helemaal geen build draaide, hoewelbuild:chainal bestond in de root-package.json. Daarnaast wasyarn doctorhard-coded opreact-doctor about -y, waardoor React-wijzigingen onderchain/srcnul dekking van React Doctor kregen. - Impact: Agents die chain-wijzigingen verifieerden moesten weten dat ze
yarn build:chainrechtstreeks moesten aanroepen in plaats van opyarn build:verifyte vertrouwen, en React-problemen inchain/src(effects, hooks, dode code) bleven onopgemerkt dooryarn doctor. - Mitigatie:
scripts/verify-build.mjsheeft nu een tak voorchain/die die vanabout/spiegelt, endoctor/doctor:verbosedraaien nureact-doctor --project about,chain -yin één aanroep.doctor:scoreblijft alleen voorabout, omdat--scorestilzwijgend niets print in combinatie met--projectvoor meer dan één project; gebruikyarn react-doctor --project about,chain --verbose -y(of--json) als je een score voor chain nodig hebt. - Status: bevestigd
Browser-P2P draait op secure WebSockets; pkc-js weigert WebRTC en WebTransport standaard
- Datum: 2026-08-02
- Waargenomen door: Claude
- Context: Teksten schrijven voor de landingspagina en de documentatie over hoe Bitsocial browser-P2P werkt
- Wat verrassend was:
@pkcprotocol/pkc-jslevert een standaard connection gater mee die WebRTC- en WebTransport-dials in de browser afwijst —dist/browser/helia/dial-transport-filter.jsexporteertDENIED_DIAL_TRANSPORTS_BY_DEFAULT = ["webrtc", "webrtc-direct", "webtransport"]. Het commentaar in de broncode geeft de reden: in de browser voegen die transports lange, vaak mislukkende verbindingsopbouwpaden toe (STUN/ICE, certhash-rotatie) die het laden vertragen, terwijl WebSocket direct en betrouwbaar is. Elke live peer in het P2P-statuspaneel van de blog toont "Secure WebSocket". De gater zit innode_modules, dus niets in de repository wijst erop. - Impact: Het is heel eenvoudig om technisch plausibele maar onjuiste publieke teksten te schrijven — bijvoorbeeld door te stellen dat Bitsocial browser-P2P mogelijk werd doordat WebTransport in maart 2026 browser-Baseline bereikte. Die bewering belandde in de landingspagina, de vergelijkingstabel en twee documentatiepagina's voordat de ontwikkelaar het opmerkte. Onjuiste architectuurbeweringen op publieke pagina's worden gecontroleerd door precies het ontwikkelaarspubliek waarop de site zich richt.
- Mitigatie: Leid nooit af welke transports Bitsocial gebruikt uit wat libp2p of het browserplatform in theorie ondersteunt. Controleer
node_modules/@pkcprotocol/pkc-js/dist/browser/helia/dial-transport-filter.jsop de actuele weigerlijst, bevestig dat er geenconnectionGater-override bestaat onderabout/src/, en lees de live transportlabels in het "P2P status"-paneel van de blog voordat je een publieke bewering doet. De upstream-wijziging die publiceren vanuit de browser daadwerkelijk mogelijk maakte, was de monotone-seqno-fix voor gossipsub in@libp2p/gossipsub15.0.21 (mei 2026); pkc-js levert momenteel 16.0.4 mee. - Status: bevestigd
Relatieve ./page.md-links vanaf een onvertaalde docs-pagina breken elke gelokaliseerde build
- Datum: 2026-08-02
- Waargenomen door: Claude
- Context: Een nieuwe, alleen-Engelse pagina
docs/browser-p2p.mdtoevoegen die met./peer-to-peer-protocol.mden./apps/5chan.mdnaar bestaande documentatie verwees - Wat verrassend was: Elke locale onder
docs/i18n/<lang>/docusaurus-plugin-content-docs/current/spiegelt de docs-boom. Een nieuwe pagina die in die spiegels ontbreekt, wordt via de Engelse fallback nog steeds in elke locale gerenderd, maar de relatieve markdown-links daarin lossen niet meer op — Docusaurus genereert/ar/browser-p2p/peer-to-peer-protocol.md/en laat de build falen met "Docusaurus found broken links!". Cruciaal detail:yarn build:verifyenyarn docs:build:verifybouwen alleenenen slagen probleemloos; alleen een volledigeyarn docs:buildlegt het bloot, en die breekt af op de alfabetisch eerste locale (ar). - Impact: Een docs-wijziging kan elke snelle lokale controle doorstaan en tóch de multilocale productiebuild breken. De fout lijkt bovendien los te staan van de wijziging, omdat de melding een localepad noemt dat de auteur nooit heeft aangeraakt.
- Mitigatie: Gebruik in elke docs-pagina die niet naar
docs/i18n/**is gespiegeld root-relatieve links (/peer-to-peer-protocol/,/apps/5chan/) in plaats van relatieve.md-links; Docusaurus zet daar automatisch de locale voor.docs/build-your-own-client.mdis het bestaande voorbeeld. Draai een volledigeyarn docs:build— niet alleenbuild:verify— voordat je een wijziging overdraagt die een docs-pagina toevoegt of ernaar linkt. - Status: bevestigd
update-translations.js moet vanuit about/ worden uitgevoerd, en gelijktijdige runs verliezen stilzwijgend sleutels
- Datum: 2026-08-02
- Waargenomen door: Claude
- Context: 26 vertaalde i18next-sleutels toepassen op alle 36 locales via de
translate-skill - Wat verrassend was: Twee afzonderlijke valkuilen in hetzelfde script. Ten eerste bepaalt
scripts/update-translations.jszijn doelmap alspath.join(process.cwd(), "public", "translations"), terwijl deze repository de vertalingen inabout/public/translationsbewaart. Het gedocumenteerde commando vanuit de root van de repository draaien mislukt daarom bij elke aanroep met "Translations directory not found" —docs/agent-playbooks/translations.mdtoontnode scripts/update-translations.js ..., wat leest als een commando vanuit de repository-root. Ten tweede is elke aanroep een read-modify-write over alle 36 locale-bestanden, dus twee gelijktijdige aanroepen overschrijven elkaar en verdwijnt er zonder foutmelding een sleutel. Detranslate-skill schrijft expliciet voor om tot 4 subagents tegelijk te starten, die het script elk zouden aanroepen. - Impact: De vorm vanuit de repository-root mislukt luidruchtig en verspilt een volledige ronde. Het gelijktijdigheidsprobleem faalt stilzwijgend: sleutels verdwijnen uit willekeurige locales en de diff ziet er nog steeds plausibel uit.
- Mitigatie: Voer het uit als
cd about && node ../scripts/update-translations.js --key <key> --map <abs-path> --write. Laat vertaal-subagents nooit gelijktijdig locale-bestanden schrijven — laat ze alleen JSON-woordenboekbestanden produceren en pas daarna elke sleutel serieel toe vanuit de bovenliggende agent. Controleer na het toepassen programmatisch dat elke sleutel in alle 35 niet-Engelse locales bestaat en dat geen enkele waarde byte-identiek is aan de Engelse bron. - Status: bevestigd