context.close() hangs once a page has started WebAudio (headless Chromium). Leave contexts open and end with os._exit(). Prefer file:// over a local HTTP server for static games; it also matches how the user opens the file. Kill orphan headless_shell processes between runs or the machine bogs down and every tool call times out..reveal visible before capturing. Otherwise scroll-reveal sections render blank and the judges score an empty page (bracket.py now does both).git fetch first: another session shipped the same queue item (NPC labels) minutes earlier. On a 100%-CPU box use a fresh browser per route + 300 s ready wait (smoke_robust.py); the shared-browser smoke crashes.cairn vibe end closes the NEWEST live session, not yours, when several agents run in parallel - it closed another session’s Mint page. Close your own session by editing its file (status/ended/end line) or check which file end will hit first. Vault push needs git -c http.https://github.com/.proxy=http://localhost:3128 push (plain push gets 407).council.py pair by hand. Also run a contrast script on every fg/bg pair (code-panel muted text failed AA at 4.38:1 while the judges did not notice).~/.vector/scratch/*/ rglob by name + mtime). Two sessions both did the Jeda NPC-label fix in parallel; the second one had to park its patch. Mint image refresh was likewise already in flight elsewhere.update-ref a branch without checking it still points where you think, and add catalog entries at the top of apps.json so parallel appends at the end do not conflict.git fetch and look for parallel sessions on the same repo/queue (another session pushed cat.svg mid-run). Resolve by a cat-only council pair + read the reasons, not by overwriting.OfflineAudioContext (deterministic, 0.2 s).text (it is the output helper).display:flex on #explore h2 brought the title back on phones).write_text on Windows writes CRLF, and a SKILL.md with CRLF loses its description in the skill list (shows ---), so the skill silently stops triggering. Write skill files with newline="\n" (or write_bytes); check_skill.py now fails on CRLF. Same bug was hiding precedent and ambitious-founder.mcpServers, VS Code servers + type stdio, OpenCode mcp + type local + command array + environment, Claude Code claude mcp add NAME --env K=V -- cmd args.bots.py compare calls a model and can take more than 120 s; run it with exec_command, never inside the python tool (it timed out and lost the session state).| NEVER kill processes by a broad command-line name filter (round.py | council.py); other sessions run the same scripts. Kill only PIDs you started. |
cairn vibe end without --session <slug> ends the NEWEST live session, which can be a parallel session’s. Always pass --session.Precedent/Queue.md, but that file’s header says the queue moved to Cairn (cairn autopilot add) and “is no longer read”, while other runs still append there. The skill owner should decide which is authoritative.exec it at the top of every call.--runs 4 before round 1.nx flag.council.py --log appends its row at the end of the log file; when the log ends with a stop: line, leave the flag out and add the row yourself.--log row has fewer cells than the Rounds table and writes the judge model names; write round rows by hand.cairn precedent queue "<text>" (plain by default; --auto means safe to run unattended, --needs-me means waiting on the user); cairn autopilot add GOAL is a different command that hands the goal to an autopilot agent. The CLI prints brain/tasks/... and brain/sessions/..., but the files are in the vault’s tasks/ and sessions/ folders, and the CLI does not commit them (still modified or untracked 5 minutes later). In the vault, git merge-base --is-ancestor <commit> origin/main re-checks a pushed note commit without a token; it reads the local tracking ref, so it is only as fresh as the last fetch.ping can report all judges ok while every scoring run hangs with empty output (3 approaches: wrapped, detached with images, direct with no images and --timeout 90). After one hung run, stop retrying, self-judge, mark it judged by self, and keep the round count low so the self-score doesn’t inflate.hone/judge.py spawns a detached council process that dies when launched from a short-lived shell tool call; launch it from a long-lived session and wait in the same command.council.py --help can hang in the foreground and a score run can go silent for 20 minutes; always run the council in the background with a done marker, and relaunch once.origin/main so other sessions do not inherit a diverged commit.judge.py writes its snapshot to a fixed bundle path, so scoring v1 overwrote the v0 bundle. Snapshot each version into hone/versions/v<N>/ before scoring.| (mise, 2026-11) Never kill browsers with Get-Process headless_shell | Stop-Process: other sessions share the machine and their Playwright runs die too (and so did my own detached checker, which then hung silently). Kill only your own tree: find children by ParentProcessId of your checker PID. Make long checkers print a flushed progress line per phase so a hang is visible. |
D report must survive one slow site: a 180 s audit timeout used to abort the whole report (batam-uncle-says, 2026-11-07); it now records ‘audit timed out’ and moves on. Sessions run in parallel: re-check paths (the skill folder was renamed refine -> hone mid-run) and re-run gates right before publishing.state/content/<slug>.json and the stored state/data.json entry (ingest refuses rebuilt pages). Declare the old->new pairs in MOVED_LINKS in tools/check.py so G3 accepts the move.os._exit() after writing results; a single-threaded server plus browser.close()/server.shutdown() hung for minutes after the work was done.juw12/steward/apps/playground; Atomize’s app code isn’t public (README-stated stack only).crewcup/index.html ends with index.html, so suffix matching flags the gallery falsely.juw12/projects is a monorepo: the checkout is sparse; git sparse-checkout add <path> happens automatically.check.py output redirected by PowerShell (>) is UTF-16; landing.py check avoids that by capturing it.?cb=<timestamp>.?demo=1; the local audit reuses that query string.?cb=<timestamp>.gh secret set from PowerShell appends CR/LF, which breaks base64 -d in CI (and would corrupt a password). Set secrets with gh secret set NAME --body <value> from Python, and decode with tr -d '\r\n ' first. Android immersive mode shows a one-time ‘Viewing full screen’ system sheet that swallows the first tap in emulator smoke tests.requestAnimationFrame(frame) at the END of frame dies silently on the first exception (sim “stops” with no pageerror after the first one). Schedule rAF first and wrap the tick in try/catch + console.error, and make the checker fail on console errors. Found via a “time stopped advancing” probe, not via pageerror.ticket, spot lookup read slot) that the first-person path never touched. Delayed UI timers (setTimeout showDay) must check they still belong to the current session.landing/state/custom/<slug>/. build copies it, and the page needs <html class="dna custom"> or publish refuses it as an unbuilt seed.gh api repos/O/R/check-runs/ID/annotations before guessing, and move to macos-15 / macos-15-intel. (2) PyObjC class names are process-global: two NSObject subclasses both named _Ticker in different modules crash the built app at import (“X is overriding existing Objective-C class”). Windows unit tests never import AppKit, so keep an AST test that checks ObjC class names are unique across the package.[WinError 32] toast from two runs writing the same project file, and a success toast covering the phone legend. Fixes: the app sets data-run=done when a run finishes and the audit waits on it (app_audit.py --ready-js); the audit retries goto with load when networkidle starves on a busy machine; the server serialises writes and retries PermissionError; never run probes while an audit runs.--use-angle=d3d11 --ignore-gpu-blocklist --enable-unsafe-swiftshader, a data-ready flag set after the first frame, and a world.info() / tableOnScreen(n) test hook so the test can click real 3D objects. Lamps and string lights hung between the camera and the tables read as clutter; keep them on walls and edges. Floating labels at head height collide with seated avatars; put table tags just above the table top and hide the tag of the user’s own table. Stack chat bubbles (newest lowest, max 3).playwright.__file__ in the actual test process before trusting “webkit not available”. Flaky single tap timeouts that move to a different control each run are load, not bugs; one real bug (mute) surfaced as a consistent failure.?local=1 BroadcastChannel test mode for single-browser e2e, show a visible “can’t reach the relays” notice after a timeout, and say plainly that two-device online use is unverified until tested off-network.| Never edit UTF-8 source with PowerShell Get-Content | Set-Content (PS 5 reads as ANSI -> mojibake in CJK/em dashes); edit via Python. cairn vibe end closes the latest live session, not yours, when several agents run - check the file it names. |
.topbar > div:first-child beat .topbar > .badge); match or exceed the original selector, and screenshot every candidate before the council..btn.quiet background rule beat [aria-pressed=true], so the pill turned invisible. Give the pressed style higher specificity and add an on/off dot so state does not rely on colour alone.script: line in its own sh; a variable set on one line is gone on the next. Put capture-and-use (e.g. uiautomator bounds -> input tap $XY) on one line.@media brace silently scoped every later rule to phones; desktop looked “fine” only because the base styles carried it. Add a brace-balance test to any repo with a hand-written stylesheet.python -m playwright install webkit (with proxy) fixed WebKit. Check playwright.__file__ first.gradle lintRelease is a real gate. The first failure was MissingPermission (VIBRATE). Read the job log (/actions/jobs/<id>/logs) instead of guessing.page.click time out (“element is not stable”). Animate a sibling (halo/glow) instead.cat_* names.role=status node, created once.const X in a classic script is not on window; feature-check with typeof X !== 'undefined', not window.X..sheet when a sheet is open; the page behind has buttons with the same labels.cairn vibe check runs a command (vibe check --session ID -- <cmd>); it is not a pass/fail flag..gitattributes * text=auto eol=lf.B init; if it is wrong, fix it, --force a new series and re-review r0.location/URLSearchParams; guard browser globals ((root.location && root.location.search) || ""). The local test runner skips it without Node, so CI is the only check - push and read the log.html { scrollbar-gutter: stable; } breaks the loop; symptom in Playwright is screenshot/click timeouts after a layout change.?lang= through the real entry URL.page.evaluate("act(...)") hangs when the app function awaits a dialog: fire it with () => { void act(...) }.video.isConnected.Get-Content x.json | ConvertFrom-Json emits a JSON array as ONE object, and wrapping it in @() nests it; re-enumerate with @($parsed | ForEach-Object { $_ }). 4) powercfg stores some indexes as REG_BINARY; [int] on byte[] throws inside an if (...) condition, the branch is skipped silently, and a “restore” can report success - verify every write by reading it back and keep the backup unless all items verify.npm run tauri, so npx @tauri-apps/cli alone fails with ENOENT package.json; add a tiny package.json with the CLI as a devDependency next to tauri.conf.json. Build arm64+armv7+x86_64 so the x86_64 emulator can smoke-test the same universal APK. Generate the PKCS12 key with Python cryptography (legacy SHA1/3DES encryption) when there is no keytool. On Windows, Python write_text() turns LF files into CRLF: check git diff --stat before pushing (a 2-line change showed 2970 lines).-c because ~/.gitconfig pins the local one. The two can swap within an hour; test both with git ls-remote right before a publish.L new dies partway, the page can ship without its gallery card (state/gallery.json has no entry). After publish, grep the live /p/ index for the slug; if missing, run gallery.add_project(...), then L gallery, and push.mobile/package.json and the app’s entry in scripts/apps.json were both missed, and test_v04_account_tour.py checks the latter. Grep for the old version before pushing.2>&1 on native commands in PowerShell. A log-line filter that matches mid-line eats legitimate output containing the same prefix; in a regex alternation put the longer alternative first.main on the best version, land only the run log, and park the candidate as a draft pull request for the owner.<footer class="wrap"> lost its vertical padding because .wrap { padding: 0 24px } beats footer { padding: ... }; compare selector specificity before blaming the screenshot.iret to ring 0); run the demo’s exact command set in that emulator early.write() that returned the texts was read as paths.state/data.json reuses a project’s subtitle inside other projects’ entries; scope text replacements to the slug’s own span and verify only that slug changed.PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=1 and channel="msedge"; under a strict CSP pass arrow-function predicates, not strings."status": null in state/content/<slug>.json and re-ingest for source-only projects.Select-Object -Last N buffers the whole stream, so you see no live progress. Write to a log file and tail it instead.capture.py used Playwright’s bundled Chromium, which a Playwright update removed; it now uses system Chrome like shoot.py.env= must merge it into the parent environment; replacing it drops PATH.cta, shot_kind and faq_drop in state/content/tests number needs its counting rule written next to it (Glow: 25 test files named in CI plus suite.js run through test_glow_harness.py gives 26; the profile’s 28 counts every file in the two test folders).Win32_Process command lines before assuming a hang, and do not kill or retry.main goes stale fast; for a one-sentence edit of a shared file (apps.json, profile README) use the contents API against the live file with an exact-count replace, not a local commit.shutil.copytree keeps time stamps, so cargo may skip the rebuild of a mutated file. Copy with shutil.copyfile and check that the built program is newer than the changed source.shoot step captures only the viewport; use a tall headless-browser window to see the lower sections (it showed a clipped quick-start line the gates did not catch).offsetParent is non-null inside a closed <details>; use checkVisibility() to test what the user can see.file:// with no proxy, so background network warm-ups must be gated on a service-worker controller.check Page.goto 30 s timeout was machine load (100% CPU); the re-run passed unchanged.inner_text is empty inside a closed <details>; read textContent or open it first.landing.py crashes printing ingest output on cp1252 consoles: set PYTHONIOENCODING=utf-8. state/content/<slug>.json steps must be {title, body} objects, not strings. A project with no live URL needs shot.jpg placed by hand (a README screenshot works).OCP.collections).--until pattern must not match ordinary test lines, or the wait ends at the first test and the job is read as finished while it still runs.edit() find-and-replace helper needs anchors that occur exactly once; assert the count before replacing./ (e.g. tree/add/etsy-prompts-product/...): repo_facts.facts_for now retries by moving path segments into the branch. Before the fix, etsy-prompts silently lost its “How it’s built” section, and gates still passed. After any full L facts/L build, diff out/p against the site clone and make sure no page lost id="hood". Publish only the pages that changed (--only a,b,c).--input <file>). Passing a 56 KB README payload via --input - stdin returned HTTP 400; the file form works.git pull --ff-only fails with “Cannot fast-forward to multiple branches” while other sessions’ unpublished work sits there. Publish one slug via gh api contents PUT, and rebuild the gallery from origin/main plus a single card. Leave their files alone.repo_facts run for all pages takes a while; use --only for one project.display: on a class (e.g. .btn{display:inline-flex}) beats the UA [hidden] rule, so hidden buttons stay visible. Add [hidden]{display:none !important} and test the header with JS-toggled elements both hidden and shown. A monorepo PR can fail CI on another app’s test: check whether main is green, then gh pr update-branch before blaming the change.(claimed <session> HH:MM) to its line and re-read the Queue; skip items claimed or done in the last hour. Also git fetch right before branching, not only at clone time.git push to juw12.github.io got proxy 407 (global .gitconfig http.proxy=localhost:3128; -c http.proxy= did not help) while gh api worked. Publish the changed file with gh api -X PUT repos/<owner>/<repo>/contents/<path> (base64 content + current sha), then git reset --hard HEAD~1 in the site clone so the next pull fast-forwards.app/workspace/<repo> checkouts. For app PRs, make your own sparse clone (git clone --filter=blob:none --sparse) in the chat’s scratch folder. Here git push works without a proxy, but gh needs HTTPS_PROXY=http://git add rewrites all lines; stage with git hash-object -w --no-filters + git update-index --cacheinfo to get the usual 44/0 diff. (10) Writing files with Path.write_text on Windows turns LF into CRLF (whole-file diffs in the profile README); use write_bytes.state/ clones are SHARED by concurrent sessions (another chat committed, reset and edited apps.json under me). If git log/status changes between two calls, stop using them: copy the card art out, take your own insert back out, and publish from private sparse clones (clone --depth 1 --filter=blob:none --no-checkout + sparse-checkout set --no-cone /path). juw12/projects scripts/apps.json is stored CRLF but .gitattributes says eol=lf, so a normal git add rewrites all ~2400 lines (add_card’s “N added, 0 deleted” guard then shows e.g. 2437/2396). Stage with git hash-object -w --no-filters + update-index --cacheinfo for a true +N/-0 diff. There is no “Games” category; games (jeda, vale, hearthwood) live under “Apps”. Cloudflare answers 403 to a bare urllib request on juwenlie.pages.dev; send a browser User-Agent.Get-Content -Raw + WriteAllText is only safe on pure-ASCII files; edit JS/i18n with Python read_text/write_text(encoding=’utf-8’). (2) A 16:9 scene canvas pushes a game’s controls below the fold at 1440x900; cap the canvas with max-height calc(100vh - N) and put the controls in one compact row, and make smoke tests scroll_into_view before mouse-driving a widget (otherwise the input lands off-screen and reads 0). (3) The proxy env flips between localhost:3128 (sometimes dead), http.https://github.com/.proxy=<corporate-proxy> (407). Fix for every child process: prepend gh/git dirs to PATH and set GIT_CONFIG_COUNT=1, GIT_CONFIG_KEY_0=http.https://github.com/.proxy, GIT_CONFIG_VALUE_0=http://localhost:3128. Android APK signing works without Java locally: make the PKCS12 with Python cryptography (PBESv2 SHA256/AES256, friendly name = keyAlias) and set it as base64 repo secret. The shared portfolio projects clone was rewritten by another session between add_card and commit - always publish apps.json from a private sparse clone.*> writes UTF-16; decode before reading). PowerShell breaks cmd /c args that contain parentheses; drive git/gh from Python subprocess instead. git through gh api still works, publish through the Git Data API (blobs -> tree -> commit -> PATCH ref). The API drops the trailing newline of the message, so a local git commit -m will not reproduce the same SHA; build the local twin with git commit-tree -F msg_without_newline and the same dates, or just commit through the API.projects/scripts/apps.json is stored CRLF in the blob but .gitattributes says eol=lf: any edit shows as a whole-file rewrite. Write the file back with CRLF and add scripts/apps.json -text to .git/info/attributes (local only) so the commit is additions-only. Never pull --rebase --autostash with the edit unstaged; the autostash dropped it.gh release upload --clobber), or the README and site overclaim.git pull --rebase stops on a conflict, HEAD is detached at upstream; git push origin HEAD:main then prints “Everything up-to-date” and exits 0 without pushing anything. Always check the pull exit code and that you are on main before pushing.pointer-events: none on phones: a two-line hint covered the basket and a drag selected the hint text instead of grabbing the shirt. Set user-select: none + -webkit-touch-callout: none on game pages.gh and Python urllib fail, but curl.exe works with or without -x localhost:3128. Authenticated calls (job logs, workflow_dispatch) work with the token from git credential fill. Never print it.git fetch before every push and rebase on top of theirs; check git log --stat HEAD..origin/main first so you know which files they touched (theirs were tools/ + docs/media only, so no conflict).repo-ignore.json before its demo existed; check repo-ignore.json for stale entries whenever a project gains a demo.%LOCALAPPDATA%\Programs\Git\cmd, gh under WinGet Packages). gh needs HTTPS_PROXY=http://localhost:3128 or it times out on TLS. git sometimes returns 407 once; just retry.L publish runs git add p, which also stages other sessions’ unpublished pages (e.g. p/nongkrong/). When other sessions are active, stage only p/<slug>/, p/index.html and p/landing.json by hand.git checkout -- (pinned version, identical files).git reset --mixed to the upstream ref and stage only your own p/<slug>/; never touch the other slug.replace_stack: True to replace (not extend) the detected stack; use it when vendored code (e.g. docs/pyodide) makes detection report the wrong languages.sync-cards.yml runs started seconds apart both open a Substack draft issue and the second fails its push. Trigger one run and wait for it; close the duplicate draft issue.explorer.exe "<Start menu .lnk>" so they survive.-c http.https://github.com/.proxy=http://localhost:3128; the gitconfig .git/FETCH_HEAD with duplicate entries breaks pull; delete it before retrying.**/fonts.g*/** in capture scripts. 4) The shell tool caps at 60 s: run gates, captures and council in a detached cmd that writes a done-file, then poll. 5) The proxy can start answering 407 to git’s CONNECT while gh api still works: push through the Git Data API (blobs, tree with base_tree, commit with the local author/committer dates and exact message) so the remote SHA equals the local one, then git update-ref refs/remotes/origin/main. 6) A realism pass (env map, ACES, modelled hands) won the blind pair only 2-0-1: material and lighting gains barely show at screenshot scale - keep the published score unless the judges move it.git checkout -- docs/pyodide docs/.nojekyll after EVERY build attempt and check git status for ‘D docs/pyodide’ before committing. (Pushed a deletion once; restored in c4af5e4.)state/content/<slug>.json is not read by build; edit the matching text in state/data.json as well, then build/check. Publishing one page through the Git Data API (blob + tree + commit) avoids touching other slugs in the site clone.checkout --theirs = my commit during a rebase) and never touch its other files.python desktop/build.py), smoke-test the real window there, and attach it to the Release on a v* tag. Tauri/wry always sets WebView2 AdditionalBrowserArguments, so WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS did not open a debug port in CI; create the window in setup() with .additional_browser_args(defaults + --remote-debugging-port) behind an env var (RUANG_DEVTOOLS_PORT) instead. Long sleeps/polls inside one python call hit the 120 s limit and wipe the session: poll CI with one short call per turn. git push 407 on <!--live--> status is managed by a workflow, and the heading counts are not maintained. The workflow builds each status line from the Source badge link and .github/landing.json; write a new bullet’s status line in the same format.git pull --rebase refuses to run with a modified tracked file, so pull before editing a tracked file such as Queue.md.chore:. The filter also drops a subject that names another project on the site (“gate”, “tools”, “skills” and others) unless it names this project too.L new --repo juw12/projects --source <tree URL> keyed the landing.json entry by the monorepo root, so the profile’s Building script could not match the app. Key monorepo apps by their tree/main/apps/<app> URL (fixed by hand in state/gallery.json for Together).state/content/<slug>.json are merged by ingest.py, not by build; re-run ingest, then build. Ingest resets repo, shipped, stack and theme; build runs enrich.py first and restores them, so read data.json only after a build.gh pr create can pass 90 s on a loaded machine; run pushes, gates and council through a detached driver script that writes a log, never inside a tool call with a 120 s limit.gh api -X PUT repos/<o>/<r>/contents/<path> (base64 content + current sha). Re-read the remote file right before writing and patch only your entry.* also takes bold heading lines; use ### headings and parse the draft with the repo’s own function before releasing.scripts/apps.json only after sync-cards.yml runs; trigger it with gh workflow run instead of waiting an hour.<email> address is linked to the account; check attribution with gh api repos/<repo>/commits --jq '.[].author.login'.git log before retrying a commit.enrich.shipped_log now skips such subjects.--no-push and push when the proxy is back.git pull --rebase --autostash in the shared Obsidian vault. Other sessions keep appending to the journal and their session notes; the autostash re-apply conflicted and their lines (journal 16:02-16:48, glowspark/kilat/millennium notes) vanished from the tree. Commit only your own files with git commit -- <paths>, then pull only when git status is clean, or git stash push -- <own files>. If it happens: diff stash@{N}^1 vs HEAD (same base means safe), restore untouched files from the stash, merge append-only files as base + stash tail + newer tail, keep a refs/backup/... ref, then drop. In PowerShell quote 'stash@{0}', or it becomes a script block.GIT_CONFIG_COUNT plus credential.https://github.com.helper, with GIT_TERMINAL_PROMPT=0). Proven for fetch (43.8 s) and push (vault push 16.3 s; landing publish 145 s). Never print it or write it to disk.raw.githubusercontent.com and the unauthenticated commits and pulls API need no token, and one detached script that writes a JSON result covers ten URLs in under a minute.gh api hung for 130 s right after two pushes had worked. Put the pull request, the notes and the vault push in one detached driver with retries; a tool call that waits for the network loses its output at 120 s.apps.json push, so check the site again later before calling the rebuild verified.whothrew-), never every cache it can see.merge-base --is-ancestor, not by comparing the head hash.gh from a Python subprocess list call was not found even with its folder added to env PATH; trigger workflows through the REST dispatch endpoint (204 = queued) instead.main, a contents-API PUT with the file’s current sha updates one file without a local rebase; re-read the sha right before the PUT.ERR_TIMED_OUT through the proxy was transient; re-run before debugging.cmd /c "git credential fill < probe.txt" (a PowerShell pipe adds a BOM and breaks it) and set GH_TOKEN for that process only. GitHub API and git push worked direct, without the proxy.exec_command breaks; write a .ps1 in the working folder and run it with -File. Normalise line endings before writing it: a doubled \r\r\n puts a blank line after each backtick and the script fails to parse.<corporate-proxy> can answer 407 to git. Route GitHub through Px for one command with -c http.https://github.com/.proxy=http://localhost:3128 (the URL-specific key beats -c http.proxy=); leave ~/.gitconfig alone.connect_over_cdp; in the sync API wait with page.wait_for_timeout(), not time.sleep() (frames don’t update while sleeping).~/.gitconfig sets http.https://github.com/.proxy=http://<corporate-proxy>, which beats http.proxy and HTTPS_PROXY. To alternate routes, pass both -c http.https://github.com/.proxy=<p> and -c http.proxy=<p> (localhost:3128 or set VAR=* && ... keeps the trailing space in the value; use PowerShell $env:NO_PROXY='*' or proxied loopback calls fail.state/config.json has its own proxy key that overrides HTTPS_PROXY. When a tool reads its proxy from a config file that is not yours: back the file up, override the key for one command, wait for the process to exit, restore the bytes and compare them with the backup.finished), or it waits out the full timeout.http.https://github.com/.proxy in ~/.gitconfig; -c http.proxy= alone does not override it. Override that exact key per command or via GIT_CONFIG_COUNT env (here to the corporate landing.py takes its proxy from state/config.json before HTTPS_PROXY, so the env var does not help; a wrapper that patches load_config in memory published through localhost:3128 without editing the skill.HONE_PROXY (default check --fonts “font fetch timed out” was the network, not the page: rerun with HTTPS_PROXY/HTTP_PROXY set to the working proxy and D6 passed.Get-Content/Set-Content: it reads UTF-8 as cp1252 and writes a BOM, so every non-ASCII character becomes mojibake (≥ -> ≥). Edit from Python with encoding="utf-8" and keep LF; add a test that tracked text files have no BOM and no mojibake.--query "" argument, which shifts every later argument. Omit the flag instead of passing an empty string.(Get-Content f -Raw).Replace(..) | Set-Content -Encoding utf8 reads UTF-8 as ANSI and writes back mojibake (“·” -> “·”) plus a BOM. Edit source files with Python (read_text/write_text encoding=’utf-8’) only; if it happens, fix with text.encode(‘cp1252’).decode(‘utf-8’).git ls-files --eol and convert back to CRLF before committing.add_card.py rewrote apps.json with LF while the repo file is CRLF (diff showed the whole file). Restore CRLF before committing so the diff is only the new card.*> logs are UTF-16; a cp1252 console crashed a bench on a Chinese print (set PYTHONIOENCODING=utf-8); Python write_text turns LF into CRLF - write bytes. 6) Compress-Archive on a 440 MB PyInstaller folder takes far longer than the build itself under load and the zip size looks stuck meanwhile; check the file lock before assuming it died. 7) The skill’s shared portfolio state clone can hold another session’s unpushed commit - edit the catalog in a fresh clone instead.apps.json is LF in the skill’s clone; check the bytes before “restoring” CRLF. In a shared clone with someone else’s untracked files, add your files by name instead of git add -A.*> writes UTF-16 logs; Python write_text on Windows writes CRLF (pass newline=”\n”); run anything over ~60 s as a detached script with a log file.\r\n; normalise it before pasting into an LF file, and read line endings with git ls-files --eol.CREATE_NO_WINDOW combined with DETACHED_PROCESS shows a console on the desktop; use CREATE_NO_WINDOW alone for background jobs.svchost.exe means the Task Scheduler started it.Path.write_text on Windows turns LF into CRLF; write bytes when a tracked file must keep its line endings.... | Set-Content file pipeline keeps the file locked until the command ends.Path(windows_path).name does nothing useful on Linux; use PureWindowsPath for paths written on Windows. Wait for the Linux CI run before calling a release done (the first v0.3.0 run failed there)..hero.split.rev .stats needs order: 3 or stats jump above the copy (fixed in design.py; keep it).<pre>). Use minmax(0,1fr) columns, pre-wrap code and <wbr> after URL punctuation. bracket.py treats overflow as a blocker.#3b82f6 on the dark panel failed A4 contrast as text; use a lighter accent tint for text and keep the saturated accent for fills.p/index.html is one long grid line, so two sessions adding cards always conflict. Resolve at card level: keep upstream’s grid and insert your <article> after the same neighbour it had in your build (split both sides on <article>...</article>, match on <h3>). You can also render the gallery from a filtered state to leave out unpublished slugs.--accent, not from state/content overrides; dark-green accents under 3:1 on the dark hero need lifting (#2f8a68 gives about 4.3:1)..sr-only box at the end of <body> made the page scroll 1px, and Chromium then turns middle-press into autoscroll and never fires auxclick (broke middle-click new tab). Pin hidden helpers with position: fixed.<style id=theme> over shared tokens is cheap: 4 directions scored in one round; light panels beat dark on a teal 3D scene.#askf button.primary, #pf button.primary). Never drop or duplicate primary inside dialogs; restyle with CSS instead..pause-label already styled the pause overlay at 1.2rem → topbar button swelled to 41px).add_card.py refreshes both clones first and takes 70 to 105 s through the proxy; run it with a log file and poll. It always writes "status": "released" and no click or wait_ms; edit the entry afterwards and re-run portfolio_card.py <id>.portfolio_card.py --check audits every card and exits 1 for an older problem on another card; read which card each PROBLEM line names. The sync workflow runs with --allow-card-issues, so a card audit warning does not block the sync.click on a button that stays disabled until the system is ready is a better “ready” signal than a fixed wait; pin a click or a wait so a later re-capture cannot show “Starting the emulator…”.check passes; publish is blocked until then (good).L check.check). Look at a full-page shot at 1280 and 390 before publish; .dev p now has overflow-wrap: anywhere in build_landing.py.navigator.share; rendering after the tap loses the user gesture.expect_download, or the download step hangs.--use-angle=d3d11 --ignore-gpu-blocklist or WebGL falls back to slow software GL; never run two browser jobs at once on a loaded machine (runs crash with TargetClosed / start-button timeouts). For any game/audio app, test WebKit: Web Audio calls before AudioContext exists threw inside the frame loop and froze the whole game (every on-screen button “did nothing”). Guard sound methods when !ctx, wrap the per-frame step in try/finally so the loop always reschedules, and let mute toggle a preference even before audio starts.navigator.audioSession.type = "playback" (Safari 16.4+) so the silent switch does not mute; resume the AudioContext on visibilitychange/pageshow/pointerdown because iOS leaves it “interrupted” after calls.canvas{width:100%;height:100%}: renderer.setSize(w, h, false) does not set CSS size, so at DPR 2 the canvas overflows the stage and element screenshots come out cropped.channel="msedge", then "chrome", instead of installing browsers.dataset.example (English) instead of its visible text quietly gives non-English users English results. Send what the user sees.gh takes 1.5 to 2.5 minutes to start and is not on the PATH of a detached plan; the landing repo_facts.py then falls back to unauthenticated PowerShell REST and can overwrite good facts with empty ones. Refresh through the tool’s own facts_for with an authenticated REST transport and compare with the stored values before merging.score.json from disk before writing a score anywhere; a remembered number was wrong (9.85 vs 9.0).data.json is indent=1, CRLF, no final newline; round-trip it in that format so the diff stays small.ingest refuses once a page has been rebuilt; edit the stored data.json entry instead. The builder shows only the first sentence (200 characters or fewer) of the first 5 limits and the FAQ uses the first 2 at 170 characters, so write each limit as one sentence.browser_python in state/config.json points at the system one.time.sleep; poll long runs with sleeps <= 100 s and read logs with read_file..bat + log can sit empty forever on this box; subprocess.run(..., timeout=) from the python tool is faster and reports real errors. Long suites: Popen and poll the log.& $PY @array mangled the pairwise arguments; a Python subprocess runner with a list argv fixed it.urllib gets 403 from juwenlie.pages.dev; send a browser User-Agent to verify the card.L new halfway and leaves half-seeded state. Run long landing commands (new / shoot / publish) detached with Start-Process and logs, then poll. Run Python with -u or the log stays empty until exit.PYTHONNOUSERSITE=1, and a tolstack folder in the cwd shadows the installed package. Run project commands from another cwd with that variable removed.ingest refuses pages that were already rebuilt; for a content refresh edit landing/state/data.json (back it up first) plus state/content/<slug>.json, then build and check.reset --hard by other jobs running in parallel. Copy the scripts to the chat working folder and render the card there (portfolio_card.py –portfolio-dir platforms; set it to where the project really runs. The FAQ keeps only the first sentence of each README answer and at most 8 items, and it quotes the status word (“it’s marked …”); pick one that reads correctly there.gh by bare name; landing.py new fails at ingest when gh is not on PATH, after the seed page, shot and gallery card already exist. Put the gh and git folders on PATH and re-run only ingest.py.CREATE_NO_WINDOW, not DETACHED_PROCESS, for child console programs. The PID a launcher prints can be a shim: kill with taskkill /T, and use a fresh log name each time.p/landing.json to the profile’s .github/landing.json (it was 10 entries stale), or Building entries miss their Landing page link.<h1> by ingest.py; edit that <h1> (and its hl span) and re-run ingest.landing build writes to landing/out/p/<slug>/, not to the site clone; only publish copies it over.precedent init crashed on a missing module-level import that no unit test touched. (2) Write a default template only after the imports ran: an earlier crashed run left a blank profile that blocked the real one (fixed: an untouched template is now replaced). (3) “Keep both” conflict merges can split a CSS block; re-check brace balance after resolving styles.css. (4) Bump the service-worker cache name past whatever main already uses, not past your own branch. (5) The vault root IS the brain here, so brain notes land at <vault>/notes/, not <vault>/brain/notes/.auto 1fr auto auto 1fr) so cat+hint stay one block and the side column centres against it.const arrow function (openSheet) before its declaration throws a TDZ error that only shows on the first run; declare UI helpers before use.const names across appended code break a whole ES module (MONTH_NAMES vs MONTH_TITLES).goto to a same-page hash link waits for a ‘load’ that never comes: go via about:blank first.wait=on connect the serial socket before QMP. -d int adds about 100 µs per trap and writes hundreds of MB; never time with it.rustup show active-toolchain instead.STEPControl_Controller.Init_s() before setting write.step.unit, or the unit setting is ignored.