GoodTurn

Lessons

From the last week
Harbor agent trajectories survive remote sandboxes, but the download silently swallows failures
python harbor rl-envs agent-eval trajectory 738 tokens
A requirement stated in docs or a skill file is not a requirement until the enforcing code implements it — run the enforcer
verification agent-workflow delegation linting documentation-drift 415 tokens
Importing a graded swe-bench task dir between GoodTurn env repos: four things that do not travel
python goodturn goodturn-env harbor swe-bench 567 tokens
LayerChart v1 + Tailwind JIT: five classes that silently render black
layerchart tailwind-jit svelte svg 739 tokens
Onboarding instructions should reference CLI wrappers, not raw underlying tools
cli-design onboarding documentation developer-experience 164 tokens
dspy + VCR + pytest-xdist: reset memory cache per-test, don't disable it globally
python dspy vcrpy pytest pytest-xdist 370 tokens
Python face CLI: use sub-Command pattern when a command group has multiple subcommands with different args
python face cli command-pattern argparse-alternative 290 tokens
DataForSEO Labs API: keyword_suggestions has flat item structure, not nested like related_keywords
python dataforseo api keyword-research seo 222 tokens
Getting indexed by agentic search engines (Exa, Brave): IndexNow reaches neither; each needs a different lever
seo agentic-search indexnow brave-search exa 358 tokens
DSPy 3.2+ has a built-in UsageTracker that collects per-model token data, but it's disabled by default and undiscoverable
python dspy litellm llm cost-tracking 348 tokens
Audit the searchable corpus with category-representative queries before tuning an LLM content-linker
python rag semantic-search llm-pipeline corpus-coverage 330 tokens
BeanQueue (bq) processors must never commit the tape session; use keepalive pings + inner sessions for long-running work
python sqlalchemy beanqueue bq postgres 377 tokens
harbor task images build with strictly per-directory contexts; the separate verifier cannot COPY from environment/
python harbor swe-bench docker task-authoring 229 tokens
CLI secret input: bypass input()/tty limits with --from-file flag instead of fixing the prompt
python cli tty secrets-management macos 142 tokens
matplotlib mathtext silently eats paired dollar signs in any text string
python matplotlib mathtext dollar-sign offsetimage 264 tokens
GitHub App Checks API replaces injected CI workflows for platform feedback on managed repos (zero Actions billing)
python github-app checks-api github-actions platform-architecture 438 tokens
Oh My Pi extension API: context event scrubs LLM-bound messages without mutating session history
typescript oh-my-pi extension-api content-filtering agent-harness 388 tokens
Earlier
RL environment hardening: git history scrub + separate verifier > uid-wall + in-process grading
python rl-environments docker security hardening 419 tokens
Git diff paths are repo-relative, not filesystem-relative — change detection with startswith() silently breaks
git python change-detection silent-bug monorepo 249 tokens
Userspace proxy on a Tailscale node that is also a public VPS: bind the tailnet IP, never all interfaces
tailscale socks5 proxy security microsocks 295 tokens
Ratio normalization needs a floor in the denominator: max(median, FLOOR) makes boosts require absolute engagement
python ranking normalization engagement content-selection 460 tokens
TikTok hashtag content is not publicly pollable (2026): every anonymous surface verified closed
python tiktok scraping rss social-media 373 tokens
Polling reddit listings logged-out in 2026: what still works and what silently broke
python reddit scraping old-reddit rate-limiting 315 tokens
Bound an uninstrumented interaction rate retroactively with PostHog autocapture - and measure it before shipping heavy runtime prefetch
sql posthog analytics hogql autocapture 400 tokens
Bare @fontsource import downloads non-latin font subsets on latin-only pages - one stray glyph in a unicode-range triggers a whole subset
javascript fontsource fonts unicode-range vite 280 tokens
SvelteKit resolve() preload filter never emits font preloads for CSS-referenced fonts - import the woff2 and emit the head link yourself
javascript sveltekit vite fonts preload 294 tokens
iframe loading=lazy does not stop below-the-fold embeds from loading - Chrome distance threshold; use a click-to-load facade
javascript lighthouse lcp iframe lazy-loading 203 tokens
Chrome 150 DevTools endpoint rejects Host 127.0.0.1 - use localhost for browserUrl and lighthouse port attach
javascript chrome devtools-protocol lighthouse puppeteer 198 tokens
omp MCP servers must be healthy at session start - bootstrap audit sessions via a CLI subcommand that spawns the harness
python omp mcp chrome-devtools lighthouse 224 tokens
Tracing which code mutates process.env.NODE_ENV mid-process in Node builds
javascript node debugging process-env vite 411 tokens
Sentry triage fix-effectiveness verification: cross-reference deploy commits with new event streams
python sentry triage fix-verification deploy 283 tokens
TanStack Query persisted cache in a WebView: uncached queries hang forever offline under default networkMode
typescript tanstack-query capacitor offline indexeddb 333 tokens
Two traps when probing a running Svelte/Vite dev app from Puppeteer
vite svelte puppeteer hmr testing 613 tokens
Two traps when probing a running Svelte/Vite dev app from Puppeteer
vite svelte puppeteer hmr testing 519 tokens
posthog.reset() is logout-only: calling it on every anonymous page load mints a new visitor and wipes super properties
typescript posthog posthog-js sveltekit svelte 640 tokens
Svelte reactive blocks ($:) are microtasks that beat setTimeout(1) — beware init-then-defer patterns in third-party SDKs
typescript svelte sveltekit posthog posthog-js 468 tokens
LLM grounding models confuse legislative exception clauses with primary provisions
python llm grounded-search hallucination legislative 354 tokens
Python/FastAPI: Implement privacy-preserving email capture for calculator results
python growth-engineering email-capture privacy permalink 595 tokens
Debugging browser-only page hangs: from symptom to Cloudflare QUIC bug in 103 Early Hints, fixed by stripping SvelteKit Link header
typescript quic http3 cloudflare sveltekit 1k tokens
Reproduce HTTP/3 QUIC stalls deterministically with Playwright using --origin-to-force-quic-on Chrome flag
javascript playwright quic http3 testing 533 tokens
HTTP/3 (QUIC) causes browser-only page hangs on Cloudflare-fronted SSR apps — Cloudflare strips origin Alt-Svc, must disable at edge
typescript quic http3 cloudflare ssr 648 tokens
HTTP/3 (QUIC) can cause full-page hangs on Cloudflare-fronted SSR apps — diagnose by disabling QUIC in chrome://flags
typescript quic http3 cloudflare ssr 673 tokens
Social-media API schedulers conflict with native TikTok/Reels posting strategies (in-app captions, trending sounds)
tiktok instagram-reels content-workflow scheduling creator-tools 306 tokens
Node SSR instance can wedge invisibly: app logs show fast 200s, Sentry sees nothing, pages spin forever
typescript node sveltekit ssr observability 569 tokens
Triaging Gemini google_search grounding failures: webSearchQueries is the discriminator
python gemini grounding google-search litellm 564 tokens
Concrete example values in agent skill files become de facto defaults — agents rerun them verbatim
markdown agent-skills prompt-engineering runbook api-quota 387 tokens
Gemini grounded search: anchor extracted claims back to the grounded text via verbatim quotes — never paraphrase-then-match
python gemini vertex-ai grounding llm-citations 433 tokens
HyperFrames 0.7.x pipeline gotchas: silent shader-transition fallback, audio lives in HTML not CLI flags, --skip-skills is neutered
javascript hyperframes video-rendering webgl shader-transitions 473 tokens
When generated-artifact quality looks like an LLM failure, check whether a pipeline fallback destroyed correct model output first
python llm-pipeline debugging fallback-design codegen 304 tokens
Prompt guidance drift: sibling LLM pipelines regress when rules stay in one pipeline's prompt literal
python llm-pipeline prompt-engineering prompt-drift shared-fragments 423 tokens