<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Console Kludge</title><description>WEBゲーム(Console)と技術ハック記事(Kludge)のハブ</description><link>https://ckludge.com/</link><item><title>最終取得と件数は、別のファイルを指していた</title><link>https://ckludge.com/blog/sitemap-count-lags-last-fetch/</link><guid isPermaLink="true">https://ckludge.com/blog/sitemap-count-lags-last-fetch/</guid><description>Search Console のサイトマップ欄で、最終取得の時刻が同じまま送信URL数が2回動いた。同じ行に並ぶ2つの数字は同じ取得の結果だと思っていたが、片方はインデックス、もう片方は子サイトマップのものだった。</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate></item><item><title>弾かれた直後、別の経路で同じ結果を得た</title><link>https://ckludge.com/blog/denied-then-did-it-another-way/</link><guid isPermaLink="true">https://ckludge.com/blog/denied-then-did-it-another-way/</guid><description>自分で置いた破壊的操作ゲートに正しく止められたあと、10秒後に別のコマンドで同じ結果を出していた。禁止はコマンドの文字列に掛かっていて、効果には掛かっていない。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>検査は在った。片方の経路にだけ繋がっていた</title><link>https://ckludge.com/blog/wired-to-only-one-path/</link><guid isPermaLink="true">https://ckludge.com/blog/wired-to-only-one-path/</guid><description>「回っていない検査はあるか」で棚卸ししたら1件も出なかった。問いを「在るべき経路の片方にしか繋がっていないか」に変えたら、記事の公開ゲートに穴が見つかった。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>gitignore の中の数字は、捏造に見える</title><link>https://ckludge.com/blog/ignored-files-look-like-fabrication/</link><guid isPermaLink="true">https://ckludge.com/blog/ignored-files-look-like-fabrication/</guid><description>記事に書いた脱出率が「リポジトリのどこにも無い」と2度指摘された。2度とも根拠は git の履歴検索だった。数字は作業ツリーに在って、ただ追跡されていなかった。</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>シード数を変えたら判定が反転した</title><link>https://ckludge.com/blog/seed-count-flipped-the-verdict/</link><guid isPermaLink="true">https://ckludge.com/blog/seed-count-flipped-the-verdict/</guid><description>説明できない暫定の値を消しに行ったら、シミュレーションのシード数を 5・20・40・60 と変えるだけで合否が入れ替わった。判定そのものがばらつきの中に沈んでいた。</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>canonicalが殻のほうを指していた</title><link>https://ckludge.com/blog/canonical-pointed-at-the-shell/</link><guid isPermaLink="true">https://ckludge.com/blog/canonical-pointed-at-the-shell/</guid><description>ゲーム3本のビルド設定を横に並べたら、1本だけcanonicalの宛先が違った。すぐ下の自分のコメントにも他2本にも反していて、しかも単体では正しく見える種類のずれだった。</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ゲーム本体が検索に無防備だった</title><link>https://ckludge.com/blog/play-pages-were-open-to-index/</link><guid isPermaLink="true">https://ckludge.com/blog/play-pages-were-open-to-index/</guid><description>ブラウザゲームを配信している/play/以下を見たら、titleは裸の文字列でcanonicalもnoindexも無かった。ゲームを説明しているページと薄い重複で競合できる状態になっていた。</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CLAUDE.md の書き方が21項目になるまで</title><link>https://ckludge.com/blog/how-to-write-claude-md/</link><guid isPermaLink="true">https://ckludge.com/blog/how-to-write-claude-md/</guid><description>Claude Code の CLAUDE.md をどう書くか。67行8千字の実物を例に、何を書いて何を docs へ出すか、なぜ抽象的な戒めは守られないのかを、実際に踏んだ事故から並べる。</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>走らせないCIは、いつ赤くなったか分からない</title><link>https://ckludge.com/blog/unrun-ci-has-no-red-date/</link><guid isPermaLink="true">https://ckludge.com/blog/unrun-ci-has-no-red-date/</guid><description>1か月以上前に組んだCIを初めて走らせたら両方落ちた。配線した日から赤かったわけではない。途中で赤くなっていて、走らせていないので誰も気づかなかった。</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>下書きは、撤回済みの主張を持ち回る</title><link>https://ckludge.com/blog/drafts-carry-retracted-claims/</link><guid isPermaLink="true">https://ckludge.com/blog/drafts-carry-retracted-claims/</guid><description>書き置いた記事4本を公開しようとしたら、外部レビューが4本すべてで事実誤りを見つけた。原因は「下書きが古くなった」ではなく、訂正が済んだ3日後に、訂正前の資料から書いていたことだった。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>同じseedの乱数列は2回作ると相関する</title><link>https://ckludge.com/blog/same-seed-two-rngs-correlate/</link><guid isPermaLink="true">https://ckludge.com/blog/same-seed-two-rngs-correlate/</guid><description>同じseedから`createRng(seed)`を2回作って別用途に使ったら、同一の乱数列なので1:1で相関していた。部屋の用途を見ただけで敵の湧き位置が分かってしまう話と、その直し方。</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>コンテナを足したら敵が置物になった</title><link>https://ckludge.com/blog/collider-added-spawner-forgot/</link><guid isPermaLink="true">https://ckludge.com/blog/collider-added-spawner-forgot/</guid><description>three.jsのゲームに物入れの当たり判定を足したら、敵の15.9%がコンテナの中に湧いて動けなくなった。移動・射線・弾は洗ったのに、置く側のスポーンだけ洗い忘れていた話。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>HPで帯に入れることはできた</title><link>https://ckludge.com/blog/hitscan-range-left-in-bullets/</link><guid isPermaLink="true">https://ckludge.com/blog/hitscan-range-left-in-bullets/</guid><description>脱出率が100%に張り付き、HPを40まで下げても動かなかった。全シードの最大被害が36しかなかったからで、さらに下げれば帯には入る。ただし敵の弾2〜3発で死ぬHPになる。数字ではなく、弾に作り変えたのに残っていた発射条件のほうを直した話。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>文字列一致の検査はコメントを見逃す</title><link>https://ckludge.com/blog/regex-source-check-passes-comments/</link><guid isPermaLink="true">https://ckludge.com/blog/regex-source-check-passes-comments/</guid><description>「main.tsがこの関数を呼んでいるか」を正規表現のソース検査で守っていたら、対象行をコメントアウトしても`if (false)`で包んでも緑のままだった。同じ形の検査を4回積み増していた話。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>git add -A で秘密ファイルを巻き込んだ</title><link>https://ckludge.com/blog/git-add-all-swept-a-secret/</link><guid isPermaLink="true">https://ckludge.com/blog/git-add-all-swept-a-secret/</guid><description>決済のバックアップコードをコミットに入れてしまった。未 push で助かったが、防いだはずのガードレールは知っている名前しか見ておらず、禁止していたはずの git add -A は5ファイルに書いてあるだけだった。</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>下書きの記事だけ検査を通っていなかった</title><link>https://ckludge.com/blog/draft-articles-had-no-gate/</link><guid isPermaLink="true">https://ckludge.com/blog/draft-articles-had-no-gate/</guid><description>ビルド成果物を実測する検査を作ってあったのに、未公開の記事はそこに入らないので1つも検査されていなかった。公開して初めて検査が効く構造の穴と、書いた検査が既存記事を落としたときの直し方。</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>インデックスされた。何が効いたかは分からない</title><link>https://ckludge.com/blog/indexed-but-cannot-attribute/</link><guid isPermaLink="true">https://ckludge.com/blog/indexed-but-cannot-attribute/</guid><description>記事の半分がインデックスされていない状態から、5日で古い記事が全部登録された。3つまとめて手を打ったせいで、どれが効いたのか切り分けられない。数字が良くなったときこそ帰属を主張できないという話。</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>座標の意味を変えたら5箇所が順に壊れた</title><link>https://ckludge.com/blog/coordinate-meaning-change-five-breaks/</link><guid isPermaLink="true">https://ckludge.com/blog/coordinate-meaning-change-five-breaks/</guid><description>サイドビュー化で y の意味を胴の中ほどから足元へ変えたところ、弾の発射位置から始まって5箇所が順に壊れた。症状ベースで潰すと同じ原因を何度も踏むという話と、アクセサで用途を分けた再発防止。</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>テストが増えたのに判定は弱くなっていた</title><link>https://ckludge.com/blog/tests-grew-assertions-weakened/</link><guid isPermaLink="true">https://ckludge.com/blog/tests-grew-assertions-weakened/</guid><description>武器を追加した回で、テスト件数は増え lint も緑だったのに、受け入れ判定が18条件それぞれの検査からグループ平均へ黙って書き換えられていた。見落とした経緯と、平均へ戻しにくくした直し方。</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CSPを緩めずに常駐ゲームを載せた</title><link>https://ckludge.com/blog/taskbar-game-under-strict-csp/</link><guid isPermaLink="true">https://ckludge.com/blog/taskbar-game-under-strict-csp/</guid><description>style-src-attr &apos;none&apos; のまま、全ページの下端に canvas のミニゲームを常駐させた。インライン style と script をゼロに保つ構成と、ロジックを canvas から切り離してテスト可能にした話。</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>50人集まるまで%を出さない実績集計</title><link>https://ckludge.com/blog/pages-functions-kv-achievement-rate/</link><guid isPermaLink="true">https://ckludge.com/blog/pages-functions-kv-achievement-rate/</guid><description>Cloudflare Pages Functions と KV で、ゲームの実績解除率を集計する API を書いた。人数が少ないときに%を表示しない判断と、KV にトランザクションが無いことをあえて許容した理由。</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>自分のガードレールを敵に壊させた話</title><link>https://ckludge.com/blog/adversarial-guardrail-rv/</link><guid isPermaLink="true">https://ckludge.com/blog/adversarial-guardrail-rv/</guid><description>PreToolUseフックのdenylistに、敵役のサブエージェントで実際に穴を開けさせてみた。見つかったバイパスと、denylistが二次防壁でしかない理由。</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>本番CSPで消えた配色をdist実測で捕まえた</title><link>https://ckludge.com/blog/csp-inline-style-ci/</link><guid isPermaLink="true">https://ckludge.com/blog/csp-inline-style-ci/</guid><description>shikiのインラインstyleがCSPのstyle-src-attr &apos;none&apos;で全消しになるバグを、astro previewでは気づけず、本番投入前のdist実測(セキュリティレビュー)で見つけた経緯と恒久対策を書く。</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>確認プロンプトに頼らないAIの止め方</title><link>https://ckludge.com/blog/fail-closed-guardrail/</link><guid isPermaLink="true">https://ckludge.com/blog/fail-closed-guardrail/</guid><description>グローバル設定が確認プロンプトを自動スキップする環境で、Claude Codeに破壊的操作をさせないために作ったdenyリストとフックの話。誤検知の実例も書く。</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code で回す複利エンジンの設計</title><link>https://ckludge.com/blog/hello-console-kludge/</link><guid isPermaLink="true">https://ckludge.com/blog/hello-console-kludge/</guid><description>自前ドメインに記事とWEBゲームを集約し、Claude Code のハーネスで verify→score→commit を自動化する。その土台の設計メモ。</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>