# Misaka Network — Changelog > `Lessons learned. Lessons shared.` > Cross-agent lesson sync via Git. All notable changes to the Misaka Network project are documented here. --- ## [3.5.0](https://github.com/Ikalus1988/MisakaNet/compare/v3.4.0...v3.5.0) (2026-11-01) ### Features * **mcp:** three retrieval tools now say which one to call instead of the others ([#4308](https://github.com/Ikalus1988/MisakaNet/issues/4308)) ([1da087e](https://github.com/Ikalus1988/MisakaNet/commit/1da087e86e312795e807eb1eed1053f036db6dbc)) ### Bug Fixes * **ci:** the classifier is a module, so nothing has to build a program out of text ([#4306](https://github.com/Ikalus1988/MisakaNet/issues/4306)) ([fc15336](https://github.com/Ikalus1988/MisakaNet/commit/fc153363a0e1ae6eaa12c6523e427fd173f1eff7)) * **ci:** three jobs ran writes without the scope to make them ([#4310](https://github.com/Ikalus1988/MisakaNet/issues/4310)) ([a9437ae](https://github.com/Ikalus1988/MisakaNet/commit/a9437ae34afb46d6ec633e12fe7d4e82c2d4ccd6)) * **docs:** the numbers and the auth story say what the code does ([#4302](https://github.com/Ikalus1988/MisakaNet/issues/4302)) ([4c378cb](https://github.com/Ikalus1988/MisakaNet/commit/4c378cbaaf127450a966cb8f8f3efc1c7503618a)) ### Documentation * **ops:** "MCP client can't connect but curl can" is a broken IPv6 path, not DNS ([#4309](https://github.com/Ikalus1988/MisakaNet/issues/4309)) ([202690c](https://github.com/Ikalus1988/MisakaNet/commit/202690cfc48ea180bde74d592bdbc7116344bb2e)) ## [3.4.0](https://github.com/Ikalus1988/MisakaNet/compare/v3.3.0...v3.4.0) (2026-11-01) ### Features * **lessons:** admit 16 intakes from the queue — batch 3 ([#4296](https://github.com/Ikalus1988/MisakaNet/issues/4296)) ([1c4cf67](https://github.com/Ikalus1988/MisakaNet/commit/1c4cf67df69154d151b238feef04a12cc636d0c4)) * **mcp:** the stdio tools say what they do to the world, and the worker already did ([#4284](https://github.com/Ikalus1988/MisakaNet/issues/4284)) ([6b73636](https://github.com/Ikalus1988/MisakaNet/commit/6b736365415a8c270b58a2d8676c612ae8975b5c)) ### Bug Fixes * **ci:** route the approval tracker into the queue a person actually works ([#4291](https://github.com/Ikalus1988/MisakaNet/issues/4291)) ([5f54d21](https://github.com/Ikalus1988/MisakaNet/commit/5f54d21e2e4eff0d07f5091ea7d13c94d0b38a20)) * **registry:** the read-back only ever saw the first page, so every release "failed" ([#4282](https://github.com/Ikalus1988/MisakaNet/issues/4282)) ([7db6bb2](https://github.com/Ikalus1988/MisakaNet/commit/7db6bb2dca8642f359dbc92ee3c56bd7e9a4c7c5)) * **release:** stop asking for approval to publish a version npm already has ([#4283](https://github.com/Ikalus1988/MisakaNet/issues/4283)) ([a8b9c22](https://github.com/Ikalus1988/MisakaNet/commit/a8b9c22a5a870091cd3345f3e7457af0ac7f7576)) * **search:** the fusion weight measured query length, not relevance ([#4293](https://github.com/Ikalus1988/MisakaNet/issues/4293)) ([2f7555e](https://github.com/Ikalus1988/MisakaNet/commit/2f7555e0cee7ae85f0c54267a0b0c208a2ee94b1)) ## [3.3.0](https://github.com/Ikalus1988/MisakaNet/compare/v3.2.0...v3.3.0) (2026-11-01) ### Features * **intake:** `proposal` is a kind, and `question` was missing from the enum a client enforces ([#4280](https://github.com/Ikalus1988/MisakaNet/issues/4280)) ([a6329c8](https://github.com/Ikalus1988/MisakaNet/commit/a6329c8a0a5f3021673cc2de844155a295ec33c4)) ### Bug Fixes * **gate:** F841 joins the bug-class gate — 39 values were computed and then dropped ([#4266](https://github.com/Ikalus1988/MisakaNet/issues/4266)) ([f332b8a](https://github.com/Ikalus1988/MisakaNet/commit/f332b8a5afe82a804bf861cc1113843538234661)) * **gate:** the docstring said 29 findings; the number was 39 ([#4270](https://github.com/Ikalus1988/MisakaNet/issues/4270)) ([a14b0d5](https://github.com/Ikalus1988/MisakaNet/commit/a14b0d560290fddd04446b9fa69fadac25cb100c)) * **intake:** a proposal is not a lesson candidate, and the classifier can say so ([#4271](https://github.com/Ikalus1988/MisakaNet/issues/4271)) ([5642be8](https://github.com/Ikalus1988/MisakaNet/commit/5642be88a0e6db48fb8de5c56f347441f9429b70)) * **intake:** a re-triage says what changed, and a proposal never gains pending-review ([#4273](https://github.com/Ikalus1988/MisakaNet/issues/4273)) ([97dc0c9](https://github.com/Ikalus1988/MisakaNet/commit/97dc0c9d1d921a4ebc7825b551888344f1cf107d)) ### Documentation * **handoff:** volume 23 — the session that shipped three releases ([#4262](https://github.com/Ikalus1988/MisakaNet/issues/4262)) ([ee235a6](https://github.com/Ikalus1988/MisakaNet/commit/ee235a6f047eb609134b370347b6cf9ca9de54ca)) * **readme:** the interface line says 8 tools; the local server ships 11 ([#4281](https://github.com/Ikalus1988/MisakaNet/issues/4281)) ([e7c576d](https://github.com/Ikalus1988/MisakaNet/commit/e7c576d62896cf4284572b96131e1f8d279d97d7)) ## [3.2.0](https://github.com/Ikalus1988/MisakaNet/compare/v3.1.0...v3.2.0) (2026-10-31) ### Features * **lessons:** admit Kuro AI's CF per-account quota lesson ([#3992](https://github.com/Ikalus1988/MisakaNet/issues/3992)) ([#4257](https://github.com/Ikalus1988/MisakaNet/issues/4257)) ([20024e4](https://github.com/Ikalus1988/MisakaNet/commit/20024e40c0ebba7d3855902642ef69a49bb15d85)) ## [3.1.0](https://github.com/Ikalus1988/MisakaNet/compare/v3.0.0...v3.1.0) (2026-10-31) ### Features * **ci:** the Windows leg is required — one leg, not three ([#4255](https://github.com/Ikalus1988/MisakaNet/issues/4255)) ([b1ae132](https://github.com/Ikalus1988/MisakaNet/commit/b1ae1324e9815943d5898c40b5736c863d24ffd5)) * **release:** attach PEP 740 attestations to the PyPI upload ([#4256](https://github.com/Ikalus1988/MisakaNet/issues/4256)) ([0d60976](https://github.com/Ikalus1988/MisakaNet/commit/0d6097648e1da3b51807feab2de1d4dfef4d0b69)) ### Bug Fixes * **corpus:** a lesson named `…template…` is a lesson, not a template ([#4222](https://github.com/Ikalus1988/MisakaNet/issues/4222)) ([98513ba](https://github.com/Ikalus1988/MisakaNet/commit/98513ba1dd13d6245c659f45c8e1d92ccfd1be96)) * **installer:** bootstrap verifies the installer's digest before it runs it ([#4225](https://github.com/Ikalus1988/MisakaNet/issues/4225)) ([04b6a49](https://github.com/Ikalus1988/MisakaNet/commit/04b6a498b376fd4c9184020e66550a497c67b80c)) * **mcp:** a client_id is a name; the token is the key ([#4237](https://github.com/Ikalus1988/MisakaNet/issues/4237)) ([88b365d](https://github.com/Ikalus1988/MisakaNet/commit/88b365d122072b9076cf89aea656f893c3a0430f)) ### Documentation * **record:** three figures were wrong, and the page is about not publishing those ([#4254](https://github.com/Ikalus1988/MisakaNet/issues/4254)) ([816563d](https://github.com/Ikalus1988/MisakaNet/commit/816563d5ef9723f893bba2020f720b6106e95ee4)) * **site:** the record — ranked 13th among GitHub MCP servers ([#4250](https://github.com/Ikalus1988/MisakaNet/issues/4250)) ([89fd198](https://github.com/Ikalus1988/MisakaNet/commit/89fd198f59eff9f6643db02b3f5d74e61ebef735)) ### Tests * **portability:** include Git's userland in the PATH shim ([#4231](https://github.com/Ikalus1988/MisakaNet/issues/4231)) ([9398ef4](https://github.com/Ikalus1988/MisakaNet/commit/9398ef430952d8ac4ae288564a1c7562910c0648)) * **portability:** skip this one on Windows, for a reason the platform decides ([#4233](https://github.com/Ikalus1988/MisakaNet/issues/4233)) ([f140d22](https://github.com/Ikalus1988/MisakaNet/commit/f140d22ee49a5bb14d05c77b24e850d6536eb559)) * **portability:** skip when the host cannot build a POSIX PATH ([#4232](https://github.com/Ikalus1988/MisakaNet/issues/4232)) ([9938e18](https://github.com/Ikalus1988/MisakaNet/commit/9938e185c953f8826af7cd3d533b4c8a1cdb7f42)) * **portability:** the no-timeout test stops reaching the network ([#4228](https://github.com/Ikalus1988/MisakaNet/issues/4228)) ([9b5ef04](https://github.com/Ikalus1988/MisakaNet/commit/9b5ef040da3b57b2b4a455287844a0df399bf4a9)) * **portability:** the PATH shim copies when it cannot symlink ([#4230](https://github.com/Ikalus1988/MisakaNet/issues/4230)) ([314045c](https://github.com/Ikalus1988/MisakaNet/commit/314045cc34759123acc418b74b8f9438350b97f0)) ## [3.0.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.50.1...v3.0.0) (2026-10-31) ### ⚠ BREAKING CHANGES * **packaging:** the package now requires Python >= 3.11. Python 3.10 reached end-of-life on 2026-10-01 and is no longer supported, so pip refuses to install this release on 3.10 with "requires a different Python". Upgrade the interpreter to 3.11 or newer before upgrading the package. ### Features * **bench:** measure the bge-m3 arm — the lever is the gate, not the model ([#3961](https://github.com/Ikalus1988/MisakaNet/issues/3961)) ([4f39aa0](https://github.com/Ikalus1988/MisakaNet/commit/4f39aa0eb08cd35682236fa29efab509b4c07184)) * **ci:** measure the first byte from CI, and assert the shape rather than the milliseconds ([#4214](https://github.com/Ikalus1988/MisakaNet/issues/4214)) ([d70959c](https://github.com/Ikalus1988/MisakaNet/commit/d70959c2549a7b2a7859a744ca262f6c48a5da35)) * **corpus:** propose the three missing structured fields, and record why the bulk run stops here ([#4033](https://github.com/Ikalus1988/MisakaNet/issues/4033)) ([9777b3a](https://github.com/Ikalus1988/MisakaNet/commit/9777b3a1be7b4051297294df660cd5cd98c7df2f)) * **dataset:** publish the corpus and the benchmarks as a versioned bundle ([#3955](https://github.com/Ikalus1988/MisakaNet/issues/3955)) ([45fe19e](https://github.com/Ikalus1988/MisakaNet/commit/45fe19eee682468b046e361f511f42cbd379ca56)) * **dataset:** publish to BigQuery, and record where the advice was wrong ([#3966](https://github.com/Ikalus1988/MisakaNet/issues/3966)) ([bd5a6e8](https://github.com/Ikalus1988/MisakaNet/commit/bd5a6e8820199e8a2b44659305a516382ca93bbc)) * **gate:** a mechanism that runs by itself must be able to fail ([87a987b](https://github.com/Ikalus1988/MisakaNet/commit/87a987bd7ed467f52380fb72b58405bcb41d92d6)) * **gate:** refuse a lesson that teaches a command name the public corpus has never seen ([#4008](https://github.com/Ikalus1988/MisakaNet/issues/4008)) ([c030e37](https://github.com/Ikalus1988/MisakaNet/commit/c030e37097d67b99a4255d95124831293a9f0a17)) * **health:** assert the search index holds the corpus, not merely that it answers ([#4199](https://github.com/Ikalus1988/MisakaNet/issues/4199)) ([920c342](https://github.com/Ikalus1988/MisakaNet/commit/920c3428994581d24f72f5025fda793b81206155)) * **heartbeat:** a fourth panel — the intake pipeline, issues in and lessons out ([#4131](https://github.com/Ikalus1988/MisakaNet/issues/4131)) ([11fb6fc](https://github.com/Ikalus1988/MisakaNet/commit/11fb6fc8e5b12a7ff7e6785bf642195224f0135f)) * **heartbeat:** the pipeline panel reports whether the search index holds the corpus ([#4197](https://github.com/Ikalus1988/MisakaNet/issues/4197)) ([2c2937a](https://github.com/Ikalus1988/MisakaNet/commit/2c2937abacad1de373974c491acf078a6b05285b)) * **intake:** `intake_lesson_to_file.py` — the `[Lesson]` converter, in the repo this time ([#4203](https://github.com/Ikalus1988/MisakaNet/issues/4203)) ([6291d53](https://github.com/Ikalus1988/MisakaNet/commit/6291d53c08289f0ae50e675a93d4a0b985c9444a)) * **intake:** surface check for identifiers the public corpus has never seen ([#3994](https://github.com/Ikalus1988/MisakaNet/issues/3994)) ([24e008e](https://github.com/Ikalus1988/MisakaNet/commit/24e008e9a212344e226e4926b360b17ed4f36cc7)) * **lessons:** add the lesson_gate PyYAML false-missing-fields report ([#3941](https://github.com/Ikalus1988/MisakaNet/issues/3941)) ([0ae5cc3](https://github.com/Ikalus1988/MisakaNet/commit/0ae5cc3b31b20cabd3efecada786cdedbc2092d2)) * **maintainer:** check downstream PRs before merging a branch ([#3867](https://github.com/Ikalus1988/MisakaNet/issues/3867)) ([5a2f115](https://github.com/Ikalus1988/MisakaNet/commit/5a2f1158552c8cc2418a9630f1c86aa7e3691884)) * **packaging:** the interpreter floor is 3.11 — Python 3.10 reached end-of-life on 2026-10-01 ([1e9ca23](https://github.com/Ikalus1988/MisakaNet/commit/1e9ca23dc6ac9a1cf2c4a1b311b319501d7b2ace)) * **process:** a weekly decision queue, and a notebook anyone can point at their own endpoint ([#3973](https://github.com/Ikalus1988/MisakaNet/issues/3973)) ([c27c605](https://github.com/Ikalus1988/MisakaNet/commit/c27c605f29a41e258544ce6961f2464e97c240b1)) * **search:** fuse the vector path for CJK queries instead of gating it behind an empty result ([#3980](https://github.com/Ikalus1988/MisakaNet/issues/3980)) ([08db81e](https://github.com/Ikalus1988/MisakaNet/commit/08db81ec9cd2d0ab7b7e83f8ef66214f8b4a0817)) * **setup:** dsh is an installer target — the rules half is written, the plugin half is printed ([#4083](https://github.com/Ikalus1988/MisakaNet/issues/4083)) ([7169531](https://github.com/Ikalus1988/MisakaNet/commit/7169531ccafc6e36a55b99d8f9881647df87e213)) * **setup:** say the install worked, with the version and whether it is current ([#4035](https://github.com/Ikalus1988/MisakaNet/issues/4035)) ([85e4844](https://github.com/Ikalus1988/MisakaNet/commit/85e4844ceaf993562123a321ba5643b0850e1356)) * **setup:** the verify verdict is per client, and one client can be judged on its own ([48879af](https://github.com/Ikalus1988/MisakaNet/commit/48879aff3db5f2b2c6624c928a45fabf5348d88c)) * **site:** a /dataset/ page, because published files nobody can find are not published ([#4012](https://github.com/Ikalus1988/MisakaNet/issues/4012)) ([a1cd99a](https://github.com/Ikalus1988/MisakaNet/commit/a1cd99a99c40d1b2a20d5259909351e2ebc178ce)) * **worker:** the AI Gateway becomes a var on the serving embedding call, off by default ([#4204](https://github.com/Ikalus1988/MisakaNet/issues/4204)) ([362bf32](https://github.com/Ikalus1988/MisakaNet/commit/362bf3206ffcbdfa659bf8801a048d56bb696905)) ### Bug Fixes * a degraded read renders as incomplete, never as zero ([#3537](https://github.com/Ikalus1988/MisakaNet/issues/3537)) ([c5335cc](https://github.com/Ikalus1988/MisakaNet/commit/c5335cc94d8aca1ba740d0520dae984125d7e861)) * **audit:** the intake-kind flip check now decides the exit code ([#3853](https://github.com/Ikalus1988/MisakaNet/issues/3853)) ([db187b1](https://github.com/Ikalus1988/MisakaNet/commit/db187b1882775686f912104d71dd023546b558d7)) * **audit:** the node summary is read in both reporter shapes ([363a02e](https://github.com/Ikalus1988/MisakaNet/commit/363a02e1b5b76b438e43022920cd9d8c6d13aadb)) * **bench:** a request that never completed is a missing row, not a miss ([#3984](https://github.com/Ikalus1988/MisakaNet/issues/3984)) ([0c7fe72](https://github.com/Ikalus1988/MisakaNet/commit/0c7fe72c067427f5ae50ee75f838e842e223d02c)) * **ci:** prove all four hard gates can go red, on every PR ([#3855](https://github.com/Ikalus1988/MisakaNet/issues/3855)) ([5f5e69f](https://github.com/Ikalus1988/MisakaNet/commit/5f5e69f195917fd272f3dec8a0ff7c0cbd0a1981)) * **ci:** the failure→lesson path must be able to see, and must say when it cannot ([2718b5a](https://github.com/Ikalus1988/MisakaNet/commit/2718b5a7ce4f874be4a153c9b468aae2ec4e599e)) * **ci:** the same-repo test compared a field the context does not have ([332abfa](https://github.com/Ikalus1988/MisakaNet/commit/332abfa70e6e675bc9a51547b687375898481540)) * **dataset:** derive the version from the commit, so a version is never rewritten ([#3959](https://github.com/Ikalus1988/MisakaNet/issues/3959)) ([525bcb6](https://github.com/Ikalus1988/MisakaNet/commit/525bcb6c251dc040dcd2a25df69bdbeb192890c7)) * **dataset:** poll for the custom domain instead of asking once ([#3958](https://github.com/Ikalus1988/MisakaNet/issues/3958)) ([e9391a0](https://github.com/Ikalus1988/MisakaNet/commit/e9391a0d015a65cd14717f3beb3853ea785da362)) * **fatal-guard:** publish the files the package requires ([#4028](https://github.com/Ikalus1988/MisakaNet/issues/4028)) ([c094a22](https://github.com/Ikalus1988/MisakaNet/commit/c094a22676ad040a36ced19b8792e53132445db9)) * **fatal-guard:** the version test pinned the version it was testing ([#4014](https://github.com/Ikalus1988/MisakaNet/issues/4014)) ([48f488d](https://github.com/Ikalus1988/MisakaNet/commit/48f488db18b1bd159deff5e9c194901247c7f389)) * **gate:** decide the third-party scanner's verdict here, not on Monday ([9348da6](https://github.com/Ikalus1988/MisakaNet/commit/9348da651c234bb617ed6283dc4c56cb0418c91b)) * **heartbeat:** the pipeline panel reported "nothing converted" when PyYAML was missing ([#4200](https://github.com/Ikalus1988/MisakaNet/issues/4200)) ([81b6121](https://github.com/Ikalus1988/MisakaNet/commit/81b61217d680df0178fcb229fb924e8d799da821)) * **hook:** the entry guard must survive a symlinked path ([54b29b6](https://github.com/Ikalus1988/MisakaNet/commit/54b29b606e7a2a27563540da5a0354df3ffdb255)) * **installer:** the DSH uninstall removes the autostart block it wrote ([0d03b39](https://github.com/Ikalus1988/MisakaNet/commit/0d03b39d2df5d3c2cf61159a02111fee698ce4ea)) * **installer:** the skill digest is line-ending normalised ([#4213](https://github.com/Ikalus1988/MisakaNet/issues/4213)) ([7ad4d5a](https://github.com/Ikalus1988/MisakaNet/commit/7ad4d5a9390f0285ffc319dc39c78296d9054849)) * **installer:** the uninstall takes back what we wrote and nothing else ([088338e](https://github.com/Ikalus1988/MisakaNet/commit/088338e957974425be504468738e4796a25a0d89)) * **intake:** a card number is grouped, so a PID and a date are not one ([#4060](https://github.com/Ikalus1988/MisakaNet/issues/4060)) ([#4067](https://github.com/Ikalus1988/MisakaNet/issues/4067)) ([2cfe2b7](https://github.com/Ikalus1988/MisakaNet/commit/2cfe2b77521985e9cf68c2b5442d6dc38b161af1)) * **intake:** an advisory check must not sit between the request and its write ([#4055](https://github.com/Ikalus1988/MisakaNet/issues/4055)) ([73d4f42](https://github.com/Ikalus1988/MisakaNet/commit/73d4f4298d7dadf62b86262398d451e75826b3e5)) * **intake:** count a repeated command token everywhere it appears ([#4001](https://github.com/Ikalus1988/MisakaNet/issues/4001)) ([f7f318a](https://github.com/Ikalus1988/MisakaNet/commit/f7f318adad60b6f11c5c6c7de16945b7df553bdf)) * **intake:** give `answered` to closed questions that already have an answer (30% → 60% searchable) ([#3981](https://github.com/Ikalus1988/MisakaNet/issues/3981)) ([e939d68](https://github.com/Ikalus1988/MisakaNet/commit/e939d680c60d0be14b38a000b93902bfe0cf9a8a)) * **intake:** put surface_report on the intake response, not the lesson one ([#3999](https://github.com/Ikalus1988/MisakaNet/issues/3999)) ([e18402b](https://github.com/Ikalus1988/MisakaNet/commit/e18402ba2816b4122a1456f2f130fef98f17ea51)) * **mcp:** open read-only preflight and dedup intake by problem ([#3934](https://github.com/Ikalus1988/MisakaNet/issues/3934)) ([e41d332](https://github.com/Ikalus1988/MisakaNet/commit/e41d33298e71a9792b9ba462d750c430d5add1bb)) * **mcp:** pad the first SSE chunk so a buffering hop actually flushes it ([#4208](https://github.com/Ikalus1988/MisakaNet/issues/4208)) ([ef47feb](https://github.com/Ikalus1988/MisakaNet/commit/ef47febb1f9c35d27f9e3c52df0811b62b4c027b)) * **mcp:** the SSE answer starts streaming before the work does ([#4207](https://github.com/Ikalus1988/MisakaNet/issues/4207)) ([2df4b73](https://github.com/Ikalus1988/MisakaNet/commit/2df4b73b78797b57066b393961e93fd696c069fb)) * **quickstart:** "no external JS" means no third-party script, not no script at all ([b54cb70](https://github.com/Ikalus1988/MisakaNet/commit/b54cb701391f8c1f7f2e1e7f811722e1147f06d9)) * **release:** give the package tag a committer identity ([#4037](https://github.com/Ikalus1988/MisakaNet/issues/4037)) ([732292b](https://github.com/Ikalus1988/MisakaNet/commit/732292b1b2989708bce92569e6b6b307ac422baa)) * **release:** render the root Release body from the CHANGELOG ([#3854](https://github.com/Ikalus1988/MisakaNet/issues/3854)) ([689a960](https://github.com/Ikalus1988/MisakaNet/commit/689a960d58a2094bf32bba90bf39617c8def7d30)), closes [#3836](https://github.com/Ikalus1988/MisakaNet/issues/3836) * **release:** stand down on npm E409 when the version already exists ([#3826](https://github.com/Ikalus1988/MisakaNet/issues/3826)) ([07f15c6](https://github.com/Ikalus1988/MisakaNet/commit/07f15c6faea60b6609b6ef6a0f2856a35f940eba)) * **release:** tag merged package releases, and dispatch their publish ([#4032](https://github.com/Ikalus1988/MisakaNet/issues/4032)) ([6c0e663](https://github.com/Ikalus1988/MisakaNet/commit/6c0e663ec02188c9a14c1148248ffa17932d1cac)) * **script:** the mutation audit's planted token is assembled at run time ([8998df8](https://github.com/Ikalus1988/MisakaNet/commit/8998df85dc1a9b4043a3628c8145ed066687c3ec)) * **search-index:** `behindBy` compares against the corpus now, not against the last refresh ([#4215](https://github.com/Ikalus1988/MisakaNet/issues/4215)) ([165bd56](https://github.com/Ikalus1988/MisakaNet/commit/165bd56e8960a7589e2e7015b320123050e0e758)) * **search:** a CJK query orders by its expanded terms, not its Latin fragment ([#4112](https://github.com/Ikalus1988/MisakaNet/issues/4112)) ([206224f](https://github.com/Ikalus1988/MisakaNet/commit/206224ffbaabebc9082ab62ed5e00d32e7c87e96)) * **search:** a no_match says what the filter removed, not just which matcher ran ([#3979](https://github.com/Ikalus1988/MisakaNet/issues/3979)) ([a02219b](https://github.com/Ikalus1988/MisakaNet/commit/a02219ba424f98481e81cf7b33f6764b0e22e1ef)) * **search:** keep FAQ scores in the lesson band ([#3936](https://github.com/Ikalus1988/MisakaNet/issues/3936)) ([68fb694](https://github.com/Ikalus1988/MisakaNet/commit/68fb694e6627ae8ce3a2a071548eef9ce00e814d)) * **setup:** the installer honours MISAKANET_AGENT_DIR like the hook does ([#3844](https://github.com/Ikalus1988/MisakaNet/issues/3844)) ([a0cd165](https://github.com/Ikalus1988/MisakaNet/commit/a0cd16542b8085e6b52b1f9db55306756c659c90)) * **setup:** uninstall ownership, stable client id, truthful manifest ([#3852](https://github.com/Ikalus1988/MisakaNet/issues/3852)) ([8e8b132](https://github.com/Ikalus1988/MisakaNet/commit/8e8b13292e7538131f7fddeaed05478e89875090)), closes [#3831](https://github.com/Ikalus1988/MisakaNet/issues/3831) [#3832](https://github.com/Ikalus1988/MisakaNet/issues/3832) [#3833](https://github.com/Ikalus1988/MisakaNet/issues/3833) [#3834](https://github.com/Ikalus1988/MisakaNet/issues/3834) * **setup:** verify and report key Claude Code on ~/.claude.json ([#3868](https://github.com/Ikalus1988/MisakaNet/issues/3868)) ([2cb53ca](https://github.com/Ikalus1988/MisakaNet/commit/2cb53caba95f093ab4e0011a89b54ba8e2820e4a)) * **site:** one copy of the escaper and the JSON reader ([8454040](https://github.com/Ikalus1988/MisakaNet/commit/845404097b2210be82e460a494ff6cbb4af71b73)) * the registration check reads /register/, and misakanet_register always says reused ([#4119](https://github.com/Ikalus1988/MisakaNet/issues/4119)) ([3818218](https://github.com/Ikalus1988/MisakaNet/commit/3818218633477fa38c4e20210dde18dba1d4877b)) * three findings from the 2026-10-31 audit — pairing-code race, unverified instruction file, sqlite thread crash ([#4212](https://github.com/Ikalus1988/MisakaNet/issues/4212)) ([8be2e15](https://github.com/Ikalus1988/MisakaNet/commit/8be2e1530683b9168d414d51c29c46bb7d9dc378)) * **triage:** the question autopilot reads the whole backlog, retries a dropped read, and keeps one digest ([#4130](https://github.com/Ikalus1988/MisakaNet/issues/4130)) ([c8fde5d](https://github.com/Ikalus1988/MisakaNet/commit/c8fde5d02ab22e345f8e6540e4ff32c51e181570)) ### Documentation * **adr:** end the Coogen borrowing programme, keep two mechanisms ([#3965](https://github.com/Ikalus1988/MisakaNet/issues/3965)) ([ee34c0f](https://github.com/Ikalus1988/MisakaNet/commit/ee34c0fba40e0419250b7556dea926aaca6a275f)) * **bench:** gemini-embedding reaches R@1 0.757 on the L1-267 set; the cross-lingual misses are not Latin tokens ([#3953](https://github.com/Ikalus1988/MisakaNet/issues/3953)) ([d1f5ccd](https://github.com/Ikalus1988/MisakaNet/commit/d1f5ccdb72f51753b3c7953f0941ee4d322ca04f)) * **bench:** measure zh retrieval by target language on the live path ([#3951](https://github.com/Ikalus1988/MisakaNet/issues/3951)) ([2e3ab1c](https://github.com/Ikalus1988/MisakaNet/commit/2e3ab1cb6366ffc804ec984d58795e067eba533c)), closes [#2250](https://github.com/Ikalus1988/MisakaNet/issues/2250) * **bench:** record the CJK fusion result, and correct the English reading ([#3989](https://github.com/Ikalus1988/MisakaNet/issues/3989)) ([5919893](https://github.com/Ikalus1988/MisakaNet/commit/59198939be1b5e547099d6e5662d18573cef30fc)) * **bench:** the live numbers after the deploy, and the failure mode behind them ([#4114](https://github.com/Ikalus1988/MisakaNet/issues/4114)) ([e035f7d](https://github.com/Ikalus1988/MisakaNet/commit/e035f7d2b48794bbda7731dc9b9daa4a6ece63df)) * **gates:** one rule, one copy ([6d0baeb](https://github.com/Ikalus1988/MisakaNet/commit/6d0baeb5a172bae35587894c78d94593a6b7b6d2)) * **heartbeat:** decide recurrence's three questions, with the first real number ([#3982](https://github.com/Ikalus1988/MisakaNet/issues/3982)) ([04b38ff](https://github.com/Ikalus1988/MisakaNet/commit/04b38ff46093d0a10542d293e5d00f13b53981d1)) * **lessons:** backfill structured fields for 37 lessons (batch 1-2 of the 61% gap) ([#4041](https://github.com/Ikalus1988/MisakaNet/issues/4041)) ([91f0402](https://github.com/Ikalus1988/MisakaNet/commit/91f0402e866e1eb6740503ed165d14d3b77d868e)) * **readme:** the retrieval table describes a configuration production no longer runs ([#4059](https://github.com/Ikalus1988/MisakaNet/issues/4059)) ([2069136](https://github.com/Ikalus1988/MisakaNet/commit/206913688aedb32c692d329c0125673c08f953f6)) * **roadmap:** 2026-10-28 rulings — ADR-0002 closed, ③'s second half lost, three workstreams registered ([#3975](https://github.com/Ikalus1988/MisakaNet/issues/3975)) ([de5cbbf](https://github.com/Ikalus1988/MisakaNet/commit/de5cbbfc6f04215ca441bad43a58724629a4afc2)) * **roadmap:** the pointer and the workstream table were stale within the same day ([#4004](https://github.com/Ikalus1988/MisakaNet/issues/4004)) ([708a911](https://github.com/Ikalus1988/MisakaNet/commit/708a911d91354d4e06ab05411f97a51c09b9cfa1)) * **setup:** the flags table has to know about --client ([48d42b0](https://github.com/Ikalus1988/MisakaNet/commit/48d42b0949d6a4368d1b98b4d3a9fa6fbf58b37f)) * **setup:** the restart is not universal, and the tool list is how you confirm it ([#3830](https://github.com/Ikalus1988/MisakaNet/issues/3830)) ([7e74ec9](https://github.com/Ikalus1988/MisakaNet/commit/7e74ec9efd2c4c399cce7d369c40f7fef05415d1)), closes [#3700](https://github.com/Ikalus1988/MisakaNet/issues/3700) * **test:** the floor-docs rule describes one floor, not two ([9859e90](https://github.com/Ikalus1988/MisakaNet/commit/9859e90bfaadfbf1654b8522c0cb4ce6652990f5)) ### Tests * **crash:** two tests reached the network, which is what "flaky" meant ([#4005](https://github.com/Ikalus1988/MisakaNet/issues/4005)) ([c42786c](https://github.com/Ikalus1988/MisakaNet/commit/c42786c6b948d742567f75ea6c0df3ab1dff7d9f)) * **hook:** make the inner redaction gate load-bearing ([#3866](https://github.com/Ikalus1988/MisakaNet/issues/3866)) ([54dab95](https://github.com/Ikalus1988/MisakaNet/commit/54dab95d66be6a438c03fabcf2561db2262ea272)) * **setup:** the manifest assertion must not assume POSIX separators ([bcb4065](https://github.com/Ikalus1988/MisakaNet/commit/bcb4065febebbc97d7d4152b77da630a51a5ca92)) ### CI/CD * **provenance:** publish the verdict to the step summary — a fork PR's comment can never be the only channel ([#3977](https://github.com/Ikalus1988/MisakaNet/issues/3977)) ([ad34fd8](https://github.com/Ikalus1988/MisakaNet/commit/ad34fd8afe2b644299db34c5fd26d2b0f01bd515)) ### Lessons * **contrib:** 125 intake lessons from the 2026-10-25 triage ([#3851](https://github.com/Ikalus1988/MisakaNet/issues/3851)) ([f757620](https://github.com/Ikalus1988/MisakaNet/commit/f7576206b700ca0dcbf709ff94d85b0ffa8b5815)) * **contrib:** answer five claimed questions ([#3924](https://github.com/Ikalus1988/MisakaNet/issues/3924) [#3925](https://github.com/Ikalus1988/MisakaNet/issues/3925) [#3923](https://github.com/Ikalus1988/MisakaNet/issues/3923) [#3926](https://github.com/Ikalus1988/MisakaNet/issues/3926) [#3962](https://github.com/Ikalus1988/MisakaNet/issues/3962)) ([#3967](https://github.com/Ikalus1988/MisakaNet/issues/3967)) ([c269fcc](https://github.com/Ikalus1988/MisakaNet/commit/c269fcc0b712c3b34591189950de464632177cc1)) * **contrib:** convert intake [#4021](https://github.com/Ikalus1988/MisakaNet/issues/4021) — V100 Strata MoE serving, measured ([#4039](https://github.com/Ikalus1988/MisakaNet/issues/4039)) ([276bb6a](https://github.com/Ikalus1988/MisakaNet/commit/276bb6afe51418479baa220eecfb30470e8105e1)) * convert 47 `[Lesson]` submissions into the corpus, close 4 duplicates (658 → 705) ([#4185](https://github.com/Ikalus1988/MisakaNet/issues/4185)) ([0db2ba0](https://github.com/Ikalus1988/MisakaNet/commit/0db2ba0fae8884246335bbfef8aab7d403ead06b)) * convert the second `[Lesson]` batch — 44 of 47, with titles and domains reviewed ([#4205](https://github.com/Ikalus1988/MisakaNet/issues/4205)) ([3c38072](https://github.com/Ikalus1988/MisakaNet/commit/3c3807201e06076dd43a159156a7ee9908554494)) * **core:** a --home sandbox must ignore the config-dir env var the shell exports ([#4118](https://github.com/Ikalus1988/MisakaNet/issues/4118)) ([8eacbc9](https://github.com/Ikalus1988/MisakaNet/commit/8eacbc9a0a7b7c3a424b32bb8e8074ae6f357566)) ## [2.50.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.50.0...v2.50.1) (2026-10-25) ### Bug Fixes * **deps:** clear the filelock and setuptools Dependabot alerts ([#3825](https://github.com/Ikalus1988/MisakaNet/issues/3825)) ([bf23422](https://github.com/Ikalus1988/MisakaNet/commit/bf234222538a03d48a4c56810e544f88f85f201d)) * **release:** read the linked CHANGELOG headings release-please writes ([#3803](https://github.com/Ikalus1988/MisakaNet/issues/3803)) ([be21274](https://github.com/Ikalus1988/MisakaNet/commit/be2127426fc98e71b6df4a42e73b59c00420b9c0)), closes [#3774](https://github.com/Ikalus1988/MisakaNet/issues/3774) * **setup:** tier ③ is the state directory, not always a hook ([#3804](https://github.com/Ikalus1988/MisakaNet/issues/3804)) ([4aa0e38](https://github.com/Ikalus1988/MisakaNet/commit/4aa0e38d683fc882d00441271e21084982379422)), closes [#3777](https://github.com/Ikalus1988/MisakaNet/issues/3777) ### Tests * **setup:** compare the mcode manifest paths in one dialect ([#3801](https://github.com/Ikalus1988/MisakaNet/issues/3801)) ([64adf68](https://github.com/Ikalus1988/MisakaNet/commit/64adf683cbca607eefe006f89daec1b739977368)), closes [#3777](https://github.com/Ikalus1988/MisakaNet/issues/3777) ### Lessons * **contrib:** three intake lessons — unexecuted samples, report-only gates, WSL/Docker readiness ([#3805](https://github.com/Ikalus1988/MisakaNet/issues/3805)) ([bdf9fae](https://github.com/Ikalus1988/MisakaNet/commit/bdf9faed681b1bd49a7ea641dc46385693f766ca)) ## [2.50.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.49.0...v2.50.0) (2026-10-24) ### Features * **setup:** add MiniMax Code (mcode) as a plugin target ([#3798](https://github.com/Ikalus1988/MisakaNet/issues/3798)) ([ad0bf8e](https://github.com/Ikalus1988/MisakaNet/commit/ad0bf8e3aabc2198fb38e69c3b92adc24343d28a)), closes [#3777](https://github.com/Ikalus1988/MisakaNet/issues/3777) ### Bug Fixes * **bench:** a red fixture leg must name the fixture that failed ([#3765](https://github.com/Ikalus1988/MisakaNet/issues/3765)) ([0fa6119](https://github.com/Ikalus1988/MisakaNet/commit/0fa6119b70b919dc9856e9fdfb316792714b6b6d)) * **deps:** pin undici to 7.30.1, the patched version of three advisories ([#3799](https://github.com/Ikalus1988/MisakaNet/issues/3799)) ([c56fc68](https://github.com/Ikalus1988/MisakaNet/commit/c56fc6893528f5b8d31bce5d18be6b982e0d8ac2)), closes [#3755](https://github.com/Ikalus1988/MisakaNet/issues/3755) * **release:** the installer's version gets a Release, and release PRs stop deadlocking ([#3795](https://github.com/Ikalus1988/MisakaNet/issues/3795)) ([759877f](https://github.com/Ikalus1988/MisakaNet/commit/759877fe9b18ad0626f9cfbb523a686eca0aa57f)), closes [#3774](https://github.com/Ikalus1988/MisakaNet/issues/3774) * **setup:** a second run is idempotent, and --verify stops lying ([#3794](https://github.com/Ikalus1988/MisakaNet/issues/3794)) ([5af7c87](https://github.com/Ikalus1988/MisakaNet/commit/5af7c87d55651667ab659d52506d92d37f6abeba)), closes [#3772](https://github.com/Ikalus1988/MisakaNet/issues/3772) [#3775](https://github.com/Ikalus1988/MisakaNet/issues/3775) [#3776](https://github.com/Ikalus1988/MisakaNet/issues/3776) [#3778](https://github.com/Ikalus1988/MisakaNet/issues/3778) * **setup:** the gate let a 100%-unusable machine through, and the uninstall did not undo ([#3768](https://github.com/Ikalus1988/MisakaNet/issues/3768)) ([f0a62ad](https://github.com/Ikalus1988/MisakaNet/commit/f0a62ad30cec61e6864442b7dacb63c50b212f52)) * **site:** the homepage called two helpers it no longer defined ([#3760](https://github.com/Ikalus1988/MisakaNet/issues/3760)) ([d0ee6cf](https://github.com/Ikalus1988/MisakaNet/commit/d0ee6cfba74926a92873861f244a82392fee9d98)) ### Documentation * count the MCP tools correctly, and pin the tables that list them ([#3797](https://github.com/Ikalus1988/MisakaNet/issues/3797)) ([f00c527](https://github.com/Ikalus1988/MisakaNet/commit/f00c527414de60b62ee8aec39c8c52bbe9f86e18)), closes [#3779](https://github.com/Ikalus1988/MisakaNet/issues/3779) * **handoff:** §1–§4 — 接口全绿、页面全废;没有 lint 的盲区;上线的是 dist 分支 ([ca47488](https://github.com/Ikalus1988/MisakaNet/commit/ca47488ca27549973c93b38e9f5ec50d7a704dd4)) * **setup:** dsh's rules block is manual — say how to upgrade and remove it ([#3796](https://github.com/Ikalus1988/MisakaNet/issues/3796)) ([e73b60e](https://github.com/Ikalus1988/MisakaNet/commit/e73b60e5333dc35880ce23cd6c17dd7bf3a0f2bb)), closes [#3773](https://github.com/Ikalus1988/MisakaNet/issues/3773) * **trust-semantics:** refresh the evidence distribution for the new E1 lesson ([350c9f3](https://github.com/Ikalus1988/MisakaNet/commit/350c9f30934df7c99430d59519bc803e1b6ee1f3)) ### Lessons * **contrib:** a green suite hid a module that a bare Node runtime cannot load ([#3757](https://github.com/Ikalus1988/MisakaNet/issues/3757)) ([fc44983](https://github.com/Ikalus1988/MisakaNet/commit/fc449838377f4bc43dbcb07ee2adf060cc591131)) * **contrib:** a hand-made PR stack is closed, not retargeted, when the upstream branch is deleted ([a997265](https://github.com/Ikalus1988/MisakaNet/commit/a997265e685f503afd1bdb1b8a68e9a18d2f8020)) ## [2.49.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.48.0...v2.49.0) (2026-10-22) ### Features * **crash:** a crash looks for an existing lesson before it leaves a draft ([#3642](https://github.com/Ikalus1988/MisakaNet/issues/3642)) ([#3676](https://github.com/Ikalus1988/MisakaNet/issues/3676)) ([5a5d0ed](https://github.com/Ikalus1988/MisakaNet/commit/5a5d0ed8e55a9bc774615b0c72cbbea0057f5902)) * govern homepage Quickstart commands and tool count with a site-facts SSOT ([#3479](https://github.com/Ikalus1988/MisakaNet/issues/3479)) ([5096384](https://github.com/Ikalus1988/MisakaNet/commit/5096384d8975c2ea0ea454524b0136355b81e4db)) * **guard:** two more mechanical shapes — an internal artifact, a new top-level directory ([#3754](https://github.com/Ikalus1988/MisakaNet/issues/3754)) ([fe6e2e0](https://github.com/Ikalus1988/MisakaNet/commit/fe6e2e0ab3a0b309e18742a0937af27796d55e64)) * **heartbeat:** report helpful-source panel votes over retrievals ([#3534](https://github.com/Ikalus1988/MisakaNet/issues/3534)) ([14f9c59](https://github.com/Ikalus1988/MisakaNet/commit/14f9c59f42bce2bc95cd615c44dbae12eec899a6)) * **install:** one generic command first, and a client table generated from data ([#3687](https://github.com/Ikalus1988/MisakaNet/issues/3687)) ([397ae0b](https://github.com/Ikalus1988/MisakaNet/commit/397ae0b7340606090853cdceb45a744978b1a6ee)) * **intake:** post conversion receipts and label ready-to-close ([#3509](https://github.com/Ikalus1988/MisakaNet/issues/3509)) ([#3565](https://github.com/Ikalus1988/MisakaNet/issues/3565)) ([761143a](https://github.com/Ikalus1988/MisakaNet/commit/761143a681f7bcd079e1420d79e19cca970dde31)) * **lessons:** adopt eleven bounty lessons, and add "video" to the domain vocabulary ([#3485](https://github.com/Ikalus1988/MisakaNet/issues/3485)) ([ec699e2](https://github.com/Ikalus1988/MisakaNet/commit/ec699e289ab7b56878bab3531b936336dac27ae0)) * **pixel-gate:** a criterion for changes that are *meant* to move the page ([#3680](https://github.com/Ikalus1988/MisakaNet/issues/3680)) ([70a38de](https://github.com/Ikalus1988/MisakaNet/commit/70a38de03b116c4040f5228016c5d8cf7bb33e50)) * **quickstart:** copy buttons per code block, per-step self-checks ([#3494](https://github.com/Ikalus1988/MisakaNet/issues/3494)) ([a0bb02a](https://github.com/Ikalus1988/MisakaNet/commit/a0bb02aabdcbd3b963eeb47467e6a5992d229fc4)), closes [#1893](https://github.com/Ikalus1988/MisakaNet/issues/1893) * **quickstart:** report qs_view/qs_copy/qs_link step events to D1 ([#3532](https://github.com/Ikalus1988/MisakaNet/issues/3532)) ([715608e](https://github.com/Ikalus1988/MisakaNet/commit/715608eaec10fff075b8d6988f0e5e75606c7482)) * **setup:** the install says what it is about to write, before it writes it ([#3690](https://github.com/Ikalus1988/MisakaNet/issues/3690)) ([#3709](https://github.com/Ikalus1988/MisakaNet/issues/3709)) ([5647207](https://github.com/Ikalus1988/MisakaNet/commit/5647207dba3d224eb5ea431369049ec69cb8d68b)) * **site:** one accent, one background, one footer ([#3541](https://github.com/Ikalus1988/MisakaNet/issues/3541), batch Z) ([#3615](https://github.com/Ikalus1988/MisakaNet/issues/3615)) ([eb26328](https://github.com/Ikalus1988/MisakaNet/commit/eb263288a8af72abbc58b15e81072ad82e37816e)) * **site:** one source for the design tokens ([#3541](https://github.com/Ikalus1988/MisakaNet/issues/3541), batch V) ([#3591](https://github.com/Ikalus1988/MisakaNet/issues/3591)) ([8fc9bf9](https://github.com/Ikalus1988/MisakaNet/commit/8fc9bf9b96c0823b62129bdd8baa6ba5f21e7332)) * **site:** the generated pages join the design gate, and the search gate stops reading a stale local index ([#3634](https://github.com/Ikalus1988/MisakaNet/issues/3634)) ([c7e2f9d](https://github.com/Ikalus1988/MisakaNet/commit/c7e2f9dfdf2ecd74ea57210cbcf0350d6085f78d)) * **site:** the halos, the colour bars and the purple ([#3541](https://github.com/Ikalus1988/MisakaNet/issues/3541), batch X) ([#3593](https://github.com/Ikalus1988/MisakaNet/issues/3593)) ([d059b7d](https://github.com/Ikalus1988/MisakaNet/commit/d059b7d62215841dbfd7a17fcccf50adb1b46b6d)) * **site:** the hand-written pages use the vocabulary ([#3541](https://github.com/Ikalus1988/MisakaNet/issues/3541), batch W) ([#3592](https://github.com/Ikalus1988/MisakaNet/issues/3592)) ([b89deee](https://github.com/Ikalus1988/MisakaNet/commit/b89deee01d545adbcc8b70dfa02ca7d3266cff24)) * **site:** the icons are Lucide SVG, not emoji ([#3541](https://github.com/Ikalus1988/MisakaNet/issues/3541), batch Y) ([#3596](https://github.com/Ikalus1988/MisakaNet/issues/3596)) ([dedc9e5](https://github.com/Ikalus1988/MisakaNet/commit/dedc9e5a7701379962547a591cc1cc499e4f3b82)) * **site:** the registration form moves to /register/, and the homepage says one line ([#3694](https://github.com/Ikalus1988/MisakaNet/issues/3694)) ([b108716](https://github.com/Ikalus1988/MisakaNet/commit/b108716ec408acfdf799dcb3a4a2eb9cffe494f8)) ### Bug Fixes * a degraded read must not be reported as an empty corpus ([#3512](https://github.com/Ikalus1988/MisakaNet/issues/3512)) ([898a63b](https://github.com/Ikalus1988/MisakaNet/commit/898a63b3f833bdbe3b6c1670bc5ceff4439fe441)) * **activity:** a day the store refused is drawn as missing, not as zero ([#3551](https://github.com/Ikalus1988/MisakaNet/issues/3551)) ([b656f7f](https://github.com/Ikalus1988/MisakaNet/commit/b656f7f7c6798529b3392846404545c9a5482cac)) * **automation:** three reds, one cause (D1's free tier) and one standing defect ([#3450](https://github.com/Ikalus1988/MisakaNet/issues/3450)) ([030b203](https://github.com/Ikalus1988/MisakaNet/commit/030b2031ea81a7998943c67a2ec4c809aeeade48)) * **backup:** export table by table — `--no-schema` alone does not dodge the FTS5 refusal ([#3452](https://github.com/Ikalus1988/MisakaNet/issues/3452)) ([72aaa6c](https://github.com/Ikalus1988/MisakaNet/commit/72aaa6c3bd37ac48a2aaf6356048eb599b020f55)) * **codeql:** keep generated lesson artefacts out of the secret query ([#3488](https://github.com/Ikalus1988/MisakaNet/issues/3488)) ([13446fc](https://github.com/Ikalus1988/MisakaNet/commit/13446fc50b98f47fd32ca4f9688b1a05d84d53a1)) * **docs:** the quickstart-events page needs the site's own partials ([#3753](https://github.com/Ikalus1988/MisakaNet/issues/3753)) ([13943c7](https://github.com/Ikalus1988/MisakaNet/commit/13943c74467d6909b1acb8900a52a665906bd5fd)) * **fatal-guard:** one payload contract on every platform, and a program path with spaces ([#3672](https://github.com/Ikalus1988/MisakaNet/issues/3672)) ([5117412](https://github.com/Ikalus1988/MisakaNet/commit/5117412918b4f3b45a2234fb0d8be485bddd8a0a)) * **fatal-guard:** the crash payload carries the error text, not the exit code ([#3647](https://github.com/Ikalus1988/MisakaNet/issues/3647)) ([86bdc3e](https://github.com/Ikalus1988/MisakaNet/commit/86bdc3e48fa1e2e46934db434ccaad1ad1a7dbcf)) * **field-reports:** the gate was rejecting a correct report ([#3703](https://github.com/Ikalus1988/MisakaNet/issues/3703)) ([#3705](https://github.com/Ikalus1988/MisakaNet/issues/3705)) ([ec647f4](https://github.com/Ikalus1988/MisakaNet/commit/ec647f4d16a4ca9df67e777f94ecd08a5ed0115f)) * **heal:** refuse to write a fixture whose signature carries a credential ([#3493](https://github.com/Ikalus1988/MisakaNet/issues/3493)) ([a9c59fb](https://github.com/Ikalus1988/MisakaNet/commit/a9c59fb0ef0c92f89b5ccedb2d43fbe0c485e5e5)) * **infra:** a build that never started is a failure, not silence ([#3637](https://github.com/Ikalus1988/MisakaNet/issues/3637)) ([1d9a28d](https://github.com/Ikalus1988/MisakaNet/commit/1d9a28de14aede2ab6959fca3fe4a29f4648ac73)) * lock the profile on Windows instead of yielding unlocked ([#3538](https://github.com/Ikalus1988/MisakaNet/issues/3538)) ([8e28cd5](https://github.com/Ikalus1988/MisakaNet/commit/8e28cd50b3c1b23ca841145ece8cd9eb5361ff75)), closes [#3536](https://github.com/Ikalus1988/MisakaNet/issues/3536) * **mcp:** local stdio search: memory_context ImportError, domain filter, "usage" routing ([#3515](https://github.com/Ikalus1988/MisakaNet/issues/3515)) ([2bb468e](https://github.com/Ikalus1988/MisakaNet/commit/2bb468ee8ba34a6239b2dc8d94808930a018354b)) * **mcp:** the preflight schema says it needs a Bearer token, not just its error ([#3497](https://github.com/Ikalus1988/MisakaNet/issues/3497)) ([b0ef5c7](https://github.com/Ikalus1988/MisakaNet/commit/b0ef5c7f020091c6eb469d0db47df3a495d3cb48)) * **pixel-gate:** a capture that never settled is not evidence ([#3684](https://github.com/Ikalus1988/MisakaNet/issues/3684)) ([2ba0bc2](https://github.com/Ikalus1988/MisakaNet/commit/2ba0bc228153b8d3d0b987f61801c1819abc9f59)) * **pixel-gate:** the default tolerance is a measured floor, and a command to re-measure it ([#3670](https://github.com/Ikalus1988/MisakaNet/issues/3670)) ([1bc785d](https://github.com/Ikalus1988/MisakaNet/commit/1bc785d9564590db812f34514f0ff254a04bfda0)) * **pixel-gate:** the page was still on its way when the capture called it stable ([#3681](https://github.com/Ikalus1988/MisakaNet/issues/3681)) ([fdacf82](https://github.com/Ikalus1988/MisakaNet/commit/fdacf8290bc25ac4ae3627badf8447c322ae9f15)) * **profile:** lock the backfill write too — the read path was writing unlocked ([#3671](https://github.com/Ikalus1988/MisakaNet/issues/3671)) ([ee125c4](https://github.com/Ikalus1988/MisakaNet/commit/ee125c461d3b2e1faf9c6cf2ea0fd175ee91d5ff)) * **release:** bound the commit scan, so the release PR can be rebuilt again ([#3741](https://github.com/Ikalus1988/MisakaNet/issues/3741)) ([66b053a](https://github.com/Ikalus1988/MisakaNet/commit/66b053ace3146eeb2bd0b91133f7f348b0e75667)) * **release:** restore the commit scan's floor, and gate it ([#3749](https://github.com/Ikalus1988/MisakaNet/issues/3749)) ([ecee4b4](https://github.com/Ikalus1988/MisakaNet/commit/ecee4b4b300127cbe5fd19722107887c6e399480)) * **release:** the extra-files of a package with a path are resolved against that path ([#3744](https://github.com/Ikalus1988/MisakaNet/issues/3744)) ([c8034c2](https://github.com/Ikalus1988/MisakaNet/commit/c8034c28efb9a7e7aed7451f327b492043c2c1fa)), closes [#3740](https://github.com/Ikalus1988/MisakaNet/issues/3740) * **setup:** --verify answers two questions, and stops calling a file it cannot write "missing" ([#3743](https://github.com/Ikalus1988/MisakaNet/issues/3743)) ([e7bda00](https://github.com/Ikalus1988/MisakaNet/commit/e7bda00f9351b571ee08553d686bbb8a34829698)) * **setup:** the hook redacts the query before it leaves the machine ([#3692](https://github.com/Ikalus1988/MisakaNet/issues/3692)) ([#3707](https://github.com/Ikalus1988/MisakaNet/issues/3707)) ([a8d23c5](https://github.com/Ikalus1988/MisakaNet/commit/a8d23c5dc58d75fc403b22c6c3bf5be190663918)) * **setup:** the npm copy of the rule text says redaction is done by code ([#3692](https://github.com/Ikalus1988/MisakaNet/issues/3692)) ([#3708](https://github.com/Ikalus1988/MisakaNet/issues/3708)) ([389c004](https://github.com/Ikalus1988/MisakaNet/commit/389c004ed612009985521cc7dd371eae00fe703d)) * **setup:** the npm description says what it writes, what leaves this machine, and the one opt-in exception ([#3689](https://github.com/Ikalus1988/MisakaNet/issues/3689)) ([#3710](https://github.com/Ikalus1988/MisakaNet/issues/3710)) ([ea2128a](https://github.com/Ikalus1988/MisakaNet/commit/ea2128a7a5ed1e7b890394c2aaf76a737af2b500)) * **setup:** the release moves the version literal, not just the manifest ([#3691](https://github.com/Ikalus1988/MisakaNet/issues/3691)) ([#3738](https://github.com/Ikalus1988/MisakaNet/issues/3738)) ([ba0c813](https://github.com/Ikalus1988/MisakaNet/commit/ba0c813692f758e8ffc370a623be9238df260b6a)) * **site:** the onboarding dialog behaves like a dialog, and says its name in the reader's language ([#3646](https://github.com/Ikalus1988/MisakaNet/issues/3646)) ([ad7e142](https://github.com/Ikalus1988/MisakaNet/commit/ad7e14224f105845384a856512488ce9606cb60e)) * **site:** the records that were wrong, and a pixel check that can see the generated tree ([#3636](https://github.com/Ikalus1988/MisakaNet/issues/3636)) ([504433e](https://github.com/Ikalus1988/MisakaNet/commit/504433e1b5c6179d5cea642f845d6cc1af39febe)) * **tests:** stop sharing one sandbox across lesson-contract tests ([#3530](https://github.com/Ikalus1988/MisakaNet/issues/3530)) ([ba917f6](https://github.com/Ikalus1988/MisakaNet/commit/ba917f62f6b80f47c41c7abaae8d911ed51700b2)), closes [#2954](https://github.com/Ikalus1988/MisakaNet/issues/2954) * the six verified severe defects from [#1775](https://github.com/Ikalus1988/MisakaNet/issues/1775) ([#3478](https://github.com/Ikalus1988/MisakaNet/issues/3478)) ([00befab](https://github.com/Ikalus1988/MisakaNet/commit/00befab068d9e9147fac95e9315b33f8c5b804a3)) * the stdio receipt must say where the report went, and the preview button was dead ([#3585](https://github.com/Ikalus1988/MisakaNet/issues/3585)) ([6e382dd](https://github.com/Ikalus1988/MisakaNet/commit/6e382dd7b86abb952141200cc806ca284c7f0de5)) * **worker:** a traffic counter is D1 plus KV, not D1 or KV ([#3549](https://github.com/Ikalus1988/MisakaNet/issues/3549)) ([be3e38a](https://github.com/Ikalus1988/MisakaNet/commit/be3e38a537a53d0664c9122278447f730a4aa2b7)) * **worker:** the account was spending 8x its free-tier row-read budget on two public endpoints ([#3590](https://github.com/Ikalus1988/MisakaNet/issues/3590)) ([1225e9e](https://github.com/Ikalus1988/MisakaNet/commit/1225e9e62bc52d6eb2abc934878a033f10495445)) * **worker:** the account was still paying 95% of its rows for one public aggregate ([#3618](https://github.com/Ikalus1988/MisakaNet/issues/3618)) ([0445e16](https://github.com/Ikalus1988/MisakaNet/commit/0445e160d20cc88dac291b2bea27329b4a120f07)) * **worker:** the search query is redacted before it reaches storage ([#3692](https://github.com/Ikalus1988/MisakaNet/issues/3692)) ([#3702](https://github.com/Ikalus1988/MisakaNet/issues/3702)) ([9bfa0d7](https://github.com/Ikalus1988/MisakaNet/commit/9bfa0d7ae6bb32753c419f72c9716f7971192f4f)) ### Documentation * align the intro with what the installer, the worker and the fields actually say ([#3500](https://github.com/Ikalus1988/MisakaNet/issues/3500)) ([f781e30](https://github.com/Ikalus1988/MisakaNet/commit/f781e3041c4117565814fb11654c3f85fba56615)) * **codeql:** correct which tool produced the sixteen secret alerts ([#3490](https://github.com/Ikalus1988/MisakaNet/issues/3490)) ([26154ef](https://github.com/Ikalus1988/MisakaNet/commit/26154efb866201c9f25fedafe0b591723043f70a)) * **field-report:** the OpenClaw follow-up, and the three findings it turned into ([#3696](https://github.com/Ikalus1988/MisakaNet/issues/3696) [#3699](https://github.com/Ikalus1988/MisakaNet/issues/3699) [#3700](https://github.com/Ikalus1988/MisakaNet/issues/3700)) ([#3703](https://github.com/Ikalus1988/MisakaNet/issues/3703)) ([9a53602](https://github.com/Ikalus1988/MisakaNet/commit/9a536025f6f6f8c361edc0ca257dc625d3d3e101)) * **integrations:** the connector's own page answers the ownership question, and it is not stale ([#3648](https://github.com/Ikalus1988/MisakaNet/issues/3648)) ([dc8b1d1](https://github.com/Ikalus1988/MisakaNet/commit/dc8b1d1a14ed00ab32fd84a6b04122cbc472a847)) * **start:** wire Quickstart track A to /start and back-link to Quickstart (fix [#1896](https://github.com/Ikalus1988/MisakaNet/issues/1896)) ([#3473](https://github.com/Ikalus1988/MisakaNet/issues/3473)) ([6699a3b](https://github.com/Ikalus1988/MisakaNet/commit/6699a3b571d4b322da28ad1c181a2ddd98deb630)) * two surfaces publish `freshness`, and they are not the same measure ([#3638](https://github.com/Ikalus1988/MisakaNet/issues/3638)) ([b05cffb](https://github.com/Ikalus1988/MisakaNet/commit/b05cffb9f5f530ed5809b2dcac45887267308903)) * **worker:** the CDN serves a cached entry to a request that carries credentials ([#3594](https://github.com/Ikalus1988/MisakaNet/issues/3594)) ([13070e4](https://github.com/Ikalus1988/MisakaNet/commit/13070e42f3d0c317f639c03b99fb1fb9c9a957ad)) ### Tests * **fatal-guard:** the Windows tokenizer test asserted a token count the machine decides ([#3678](https://github.com/Ikalus1988/MisakaNet/issues/3678)) ([40dbc21](https://github.com/Ikalus1988/MisakaNet/commit/40dbc216152f6186f6a61a7bf5433f9b0a25ffa1)) * **hook:** the fetch test races the hook's own four-second stall guard ([#3692](https://github.com/Ikalus1988/MisakaNet/issues/3692)) ([#3718](https://github.com/Ikalus1988/MisakaNet/issues/3718)) ([ba6dad3](https://github.com/Ikalus1988/MisakaNet/commit/ba6dad365d5a63d53de73443667f33313379c982)) * **site:** lock Quickstart copy to data-i18n and keep zh from shipping English ([#3475](https://github.com/Ikalus1988/MisakaNet/issues/3475)) ([11887f1](https://github.com/Ikalus1988/MisakaNet/commit/11887f18ad3d930b514bf91e2d8e21ddf83821ae)) ### CI/CD * **setup:** the setup package is released with the repository, and drift is a red gate ([#3691](https://github.com/Ikalus1988/MisakaNet/issues/3691)) ([#3715](https://github.com/Ikalus1988/MisakaNet/issues/3715)) ([1d3c0ba](https://github.com/Ikalus1988/MisakaNet/commit/1d3c0ba6b1304541115aa462a27017204a041a6c)) ### Lessons * **contrib:** answer four claimed questions ([#3564](https://github.com/Ikalus1988/MisakaNet/issues/3564) [#3299](https://github.com/Ikalus1988/MisakaNet/issues/3299) [#3301](https://github.com/Ikalus1988/MisakaNet/issues/3301) [#3380](https://github.com/Ikalus1988/MisakaNet/issues/3380)) ([#3682](https://github.com/Ikalus1988/MisakaNet/issues/3682)) ([c4a01a8](https://github.com/Ikalus1988/MisakaNet/commit/c4a01a8040356723d263cf7ad3d8ddd1b4e69573)) * convert intake [#3339](https://github.com/Ikalus1988/MisakaNet/issues/3339) (proxy the shell never inherited) and [#3470](https://github.com/Ikalus1988/MisakaNet/issues/3470) (a disable nobody verified) ([#3501](https://github.com/Ikalus1988/MisakaNet/issues/3501)) ([916650c](https://github.com/Ikalus1988/MisakaNet/commit/916650c1b43aba72c289b6691ce68470e30ebd12)) ## [2.48.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.47.0...v2.48.0) (2026-10-17) ### Features * **lessons:** adopt [#3422](https://github.com/Ikalus1988/MisakaNet/issues/3422) and [#3426](https://github.com/Ikalus1988/MisakaNet/issues/3426) — JS regex escaping, ROBOGUIDE plugin unavailable ([#3437](https://github.com/Ikalus1988/MisakaNet/issues/3437)) ([6dc4f7c](https://github.com/Ikalus1988/MisakaNet/commit/6dc4f7cacf197d202bb4153574c09b10134de328)) ### Bug Fixes * **bounty:** the issue title no longer promises a lesson the task does not ask for ([#3439](https://github.com/Ikalus1988/MisakaNet/issues/3439)) ([a4e8c41](https://github.com/Ikalus1988/MisakaNet/commit/a4e8c415a8091e4e348125f8e23fa8d31c0c6ebe)) * **codeql:** remove the taint from the plan printer instead of silencing it ([#3442](https://github.com/Ikalus1988/MisakaNet/issues/3442)) ([8f8bd11](https://github.com/Ikalus1988/MisakaNet/commit/8f8bd11e88fbcb109cbc3b172ba6bf5446163d98)) * **health:** classify this isolate's KV error when the global row cannot be read ([#3440](https://github.com/Ikalus1988/MisakaNet/issues/3440)) ([67e7a4e](https://github.com/Ikalus1988/MisakaNet/commit/67e7a4eb6454620a450cf5ac271e3684ba506ca8)) * **intake:** classify the "gap probe" self-declared probe ([#3284](https://github.com/Ikalus1988/MisakaNet/issues/3284)) ([#3429](https://github.com/Ikalus1988/MisakaNet/issues/3429)) ([a664815](https://github.com/Ikalus1988/MisakaNet/commit/a6648150971c34edcfe5ed3bb96157bf26f98532)) ### Documentation * **auto-merge:** record what the CodeQL alerts actually cost ([#3448](https://github.com/Ikalus1988/MisakaNet/issues/3448)) ([075c42d](https://github.com/Ikalus1988/MisakaNet/commit/075c42d3e32a66e3647558a617f2316d69875b94)) ### Tests * **codeql:** print the plan reasons bare — the previous attempt never landed ([#3445](https://github.com/Ikalus1988/MisakaNet/issues/3445)) ([d10b23c](https://github.com/Ikalus1988/MisakaNet/commit/d10b23c7c464beeee056f4e1752f064453ebea7b)) * **codeql:** print the plan reasons bare, to locate the taint's source ([#3444](https://github.com/Ikalus1988/MisakaNet/issues/3444)) ([a37c34f](https://github.com/Ikalus1988/MisakaNet/commit/a37c34f46a9b75af40780ef7afc426a2a1de88bb)) ## [2.47.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.46.0...v2.47.0) (2026-10-17) ### Features * **health:** report the corpus read path, and stop retrying D1 while it is refusing ([#3427](https://github.com/Ikalus1988/MisakaNet/issues/3427)) ([726326b](https://github.com/Ikalus1988/MisakaNet/commit/726326bc75b9b885adb3cfc49cecbca07bc8e36e)) * **lessons:** adopt [#3324](https://github.com/Ikalus1988/MisakaNet/issues/3324) — a command piped into tail reports tail's exit code ([#3421](https://github.com/Ikalus1988/MisakaNet/issues/3421)) ([d9c520b](https://github.com/Ikalus1988/MisakaNet/commit/d9c520b723b49ad177183673773a8cf691c88b56)) * **worker:** rebuild the index from the full snapshot, so an outage keeps full-text search ([#3435](https://github.com/Ikalus1988/MisakaNet/issues/3435)) ([fd4f73a](https://github.com/Ikalus1988/MisakaNet/commit/fd4f73a63483284347cf3933b22fc0353a87449e)) ### Bug Fixes * **worker:** a D1 quota refusal falls back to the snapshot instead of taking search down ([#3423](https://github.com/Ikalus1988/MisakaNet/issues/3423)) ([b1756f5](https://github.com/Ikalus1988/MisakaNet/commit/b1756f5dd41236ffc298d941037d1b3084516492)) * **worker:** get_lesson reads the public file when D1 refuses ([#3434](https://github.com/Ikalus1988/MisakaNet/issues/3434)) ([40aa08b](https://github.com/Ikalus1988/MisakaNet/commit/40aa08b8974a50537d5f00e71c2e7325fc5360f1)) * **worker:** never rebuild the search index from the quota fallback ([#3433](https://github.com/Ikalus1988/MisakaNet/issues/3433)) ([00f944a](https://github.com/Ikalus1988/MisakaNet/commit/00f944a1321cb407d877422a20978d571fc2bfae)) * **worker:** the fallback serves the current corpus, not a 192-row copy of it ([#3432](https://github.com/Ikalus1988/MisakaNet/issues/3432)) ([f11e489](https://github.com/Ikalus1988/MisakaNet/commit/f11e4892670259c12b16321b83341a5c52926749)) ## [2.46.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.45.0...v2.46.0) (2026-10-17) ### Features * **heartbeat:** a daily pulse that answers who called, what they asked, and whether it helped ([#3356](https://github.com/Ikalus1988/MisakaNet/issues/3356)) ([913e4ad](https://github.com/Ikalus1988/MisakaNet/commit/913e4ad5b0a7e7b8599f7a8d842abfd2b8e54596)) * **lessons:** adopt [#3340](https://github.com/Ikalus1988/MisakaNet/issues/3340) — AgentCap registry secret-safe false positive ([#3409](https://github.com/Ikalus1988/MisakaNet/issues/3409)) ([24b1308](https://github.com/Ikalus1988/MisakaNet/commit/24b13086d4cc072da70e3f6c77f55d820045f8cd)) * **lessons:** adopt the six remaining bounty lessons, with provenance and regenerated artifacts ([#3417](https://github.com/Ikalus1988/MisakaNet/issues/3417)) ([0cf5ee8](https://github.com/Ikalus1988/MisakaNet/commit/0cf5ee8d889c9a4bef7800befd2994714dd63c28)) * **lessons:** answer intakes [#2752](https://github.com/Ikalus1988/MisakaNet/issues/2752) and [#2760](https://github.com/Ikalus1988/MisakaNet/issues/2760) on intake pipeline truncation (closes [#2839](https://github.com/Ikalus1988/MisakaNet/issues/2839)) ([#3366](https://github.com/Ikalus1988/MisakaNet/issues/3366)) ([8e3d8a3](https://github.com/Ikalus1988/MisakaNet/commit/8e3d8a305fdb0128d38d955131b5f64c511034e5)) ### Bug Fixes * **e2e:** read the documented tool list from AGENTS.md instead of copying it ([#3404](https://github.com/Ikalus1988/MisakaNet/issues/3404)) ([7878a9e](https://github.com/Ikalus1988/MisakaNet/commit/7878a9ea77286a0c77d965838cb3eeb5cca73bdc)) * **intake:** one intake converts to one lesson, and the lesson channel arms itself ([#3361](https://github.com/Ikalus1988/MisakaNet/issues/3361)) ([b8403c8](https://github.com/Ikalus1988/MisakaNet/commit/b8403c8f4381c35c8e324d5a6368e0a0c4db4bd9)) * **readme:** make the license badge a fact instead of a live lookup, and stop shipping LICENSE as CRLF ([#3408](https://github.com/Ikalus1988/MisakaNet/issues/3408)) ([b9a9266](https://github.com/Ikalus1988/MisakaNet/commit/b9a92664c6b75724c0ec1fbc080b49cf41e72424)) * **readme:** publish the star count from our own badge data, so it cannot say "invalid" ([#3420](https://github.com/Ikalus1988/MisakaNet/issues/3420)) ([39d208d](https://github.com/Ikalus1988/MisakaNet/commit/39d208dab4a88d70d7fdf2481a9c9abf2de282c2)) ### Documentation * **dsh:** what the plugin actually gives, and the one step it cannot do for you ([#3398](https://github.com/Ikalus1988/MisakaNet/issues/3398)) ([c8c53aa](https://github.com/Ikalus1988/MisakaNet/commit/c8c53aa063a0d12225d3b008db748dc18e9ab56b)) ### Lessons * **contrib:** a fix verified in a working tree is not a fix that shipped ([#3353](https://github.com/Ikalus1988/MisakaNet/issues/3353)) ([591b357](https://github.com/Ikalus1988/MisakaNet/commit/591b357c056e0624142e572a63feebec13bc9116)) ## [2.45.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.44.2...v2.45.0) (2026-10-17) ### Features * **dsh-panel:** read where the corpus has no answer yet (section ⑦) ([#3351](https://github.com/Ikalus1988/MisakaNet/issues/3351)) ([4adc4e5](https://github.com/Ikalus1988/MisakaNet/commit/4adc4e5b9b119d33448993dc9e1ae725ba8ce672)) * **dsh-panel:** show the corpus's most-retrieved lessons in the review panel ([#3357](https://github.com/Ikalus1988/MisakaNet/issues/3357)) ([678adb2](https://github.com/Ikalus1988/MisakaNet/commit/678adb26300f929e5687bb758776e2c00e9c9adc)) * **site,ci:** fold the contributor ranking, and state the landing rules where a fork contributor reads them ([#3395](https://github.com/Ikalus1988/MisakaNet/issues/3395)) ([088faed](https://github.com/Ikalus1988/MisakaNet/commit/088faedcede551558db9c8e3463cf166c1cc3a0f)) ### Bug Fixes * **contribute:** the contribution path tells the truth about what it drops ([#3365](https://github.com/Ikalus1988/MisakaNet/issues/3365)) ([dfdc60f](https://github.com/Ikalus1988/MisakaNet/commit/dfdc60f37287370c77c8bbd58db02c180b797e0a)) * **evidence:** E4 is observed, not declared — distinct clients, not a line in the lesson ([#3358](https://github.com/Ikalus1988/MisakaNet/issues/3358)) ([babf2ed](https://github.com/Ikalus1988/MisakaNet/commit/babf2edf4403f7261f0a352c83d8fc35b6a384bf)) * **site-watch:** follow `dist`, the branch that now deploys the site ([#3390](https://github.com/Ikalus1988/MisakaNet/issues/3390)) ([5b94323](https://github.com/Ikalus1988/MisakaNet/commit/5b943235000cb45a25af4ea5b8041f59c3702de1)) ### Documentation * **ci:** 按第一性原理量一遍 84 个 workflow:约 20 种失败面,本 PR 不删任何 workflow ([#3360](https://github.com/Ikalus1988/MisakaNet/issues/3360)) ([e52d63c](https://github.com/Ikalus1988/MisakaNet/commit/e52d63c8029d3e33a9f58fb49f78dd7fcac4e117)) * **maintainer:** write down the lens that would have caught the vote button ([#3350](https://github.com/Ikalus1988/MisakaNet/issues/3350)) ([e54b73e](https://github.com/Ikalus1988/MisakaNet/commit/e54b73e0c7fd54ee5c69042b3c50ad26b73e3980)) * **ops:** the branch and worktree hygiene rules, including the criterion I got wrong ([#3391](https://github.com/Ikalus1988/MisakaNet/issues/3391)) ([5bd9d76](https://github.com/Ikalus1988/MisakaNet/commit/5bd9d769cd8f75326eea5704b7cb675e7da7154d)) * **readme:** make the front door a positioning document, and make E4 an observation everywhere ([#3364](https://github.com/Ikalus1988/MisakaNet/issues/3364)) ([428074a](https://github.com/Ikalus1988/MisakaNet/commit/428074a53709256a91b65d253176d57ba67717e7)) * **readme:** say it shorter — 574 lines to 313, without dropping a gated claim ([#3399](https://github.com/Ikalus1988/MisakaNet/issues/3399)) ([801189d](https://github.com/Ikalus1988/MisakaNet/commit/801189d08afde18a89616ef2bb5bf58dd1c26287)) * write down the owner's standing decision rule, where every session will read it ([#3363](https://github.com/Ikalus1988/MisakaNet/issues/3363)) ([9174424](https://github.com/Ikalus1988/MisakaNet/commit/9174424371ac13bb64a46d891b6d9cfc2d9d83db)) ### CI/CD * **shape-guard:** let a PR declare a whole-file README rewrite instead of failing it ([#3400](https://github.com/Ikalus1988/MisakaNet/issues/3400)) ([e593b4b](https://github.com/Ikalus1988/MisakaNet/commit/e593b4beaf76cfece3d672e5928fa47e49d3cf3c)) ## [2.44.2](https://github.com/Ikalus1988/MisakaNet/compare/v2.44.1...v2.44.2) (2026-10-16) ### Bug Fixes * **dsh-panel:** the counters a Chinese reader sees, and the entry point nobody could find ([#3347](https://github.com/Ikalus1988/MisakaNet/issues/3347)) ([536661c](https://github.com/Ikalus1988/MisakaNet/commit/536661c1780ad7694f9cd7260e7ba476bc35012c)), closes [#3314](https://github.com/Ikalus1988/MisakaNet/issues/3314) ### Tests * **dsh:** pin the localization red fixture to a commit, not to `origin/main` ([#3352](https://github.com/Ikalus1988/MisakaNet/issues/3352)) ([a9e0a4b](https://github.com/Ikalus1988/MisakaNet/commit/a9e0a4b90043178d470c43779871c8314387fbda)) ### CI/CD * **site:** publish the generated site to a `dist` branch (part 1 of 2 — nothing is deleted here) ([#3317](https://github.com/Ikalus1988/MisakaNet/issues/3317)) ([d1eeba6](https://github.com/Ikalus1988/MisakaNet/commit/d1eeba6f4ec5eef276998793d8d9ef2c5cd049cc)) ## [2.44.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.44.0...v2.44.1) (2026-10-16) ### Tests * drop two `eval`s a code scanner is right about, and fix a recipe that expired ([#3327](https://github.com/Ikalus1988/MisakaNet/issues/3327)) ([27c24fd](https://github.com/Ikalus1988/MisakaNet/commit/27c24fd179711c289ed33ff533535469d83b6eb4)), closes [#3314](https://github.com/Ikalus1988/MisakaNet/issues/3314) [#3322](https://github.com/Ikalus1988/MisakaNet/issues/3322) ## [2.44.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.43.1...v2.44.0) (2026-10-16) ### Features * **dsh-panel:** make the sidebar useful rather than ornamental, and its effect measurable ([#3314](https://github.com/Ikalus1988/MisakaNet/issues/3314)) ([1ea54dd](https://github.com/Ikalus1988/MisakaNet/commit/1ea54ddfb17a57e5d5af6c3cdfcac93f4601e655)) * **lessons:** convert five intake blind spots into contrib lessons ([#3313](https://github.com/Ikalus1988/MisakaNet/issues/3313)) ([5cbccf9](https://github.com/Ikalus1988/MisakaNet/commit/5cbccf982a2d39eb41b68a185e0e8efbb34888a1)), closes [#2300](https://github.com/Ikalus1988/MisakaNet/issues/2300) [#3068](https://github.com/Ikalus1988/MisakaNet/issues/3068) [#3246](https://github.com/Ikalus1988/MisakaNet/issues/3246) [#3145](https://github.com/Ikalus1988/MisakaNet/issues/3145) [#3175](https://github.com/Ikalus1988/MisakaNet/issues/3175) * **worker:** implement the first-call funnel out of the counters (P0[#3](https://github.com/Ikalus1988/MisakaNet/issues/3)) ([#3319](https://github.com/Ikalus1988/MisakaNet/issues/3319)) ([2e0d954](https://github.com/Ikalus1988/MisakaNet/commit/2e0d954bbe08e465a1823c8e8ff2862ecfe77050)) ### Bug Fixes * **ci:** registry-drift-watch could never report the drift it detects ([#3322](https://github.com/Ikalus1988/MisakaNet/issues/3322)) ([fe55c7d](https://github.com/Ikalus1988/MisakaNet/commit/fe55c7d6454aa4abfb0ebc7bf7c6c5da021098d8)) * **ci:** two workflow files GitHub refuses to parse, and a gate so the third one is caught ([#3308](https://github.com/Ikalus1988/MisakaNet/issues/3308)) ([3f135eb](https://github.com/Ikalus1988/MisakaNet/commit/3f135eb4f8155a767ad97e4c9e37a7d793a2bd16)) * **docs:** pin the retyped hosted tool counts, and reject a duplicated docs/mcp.md row ([#3315](https://github.com/Ikalus1988/MisakaNet/issues/3315)) ([6fb386e](https://github.com/Ikalus1988/MisakaNet/commit/6fb386ea99694ac3096ccce43567c5d6b597129b)), closes [#1822](https://github.com/Ikalus1988/MisakaNet/issues/1822) ### Lessons * **core:** require_relative anchors on the requiring file, so retire the `cd` advice ([#3294](https://github.com/Ikalus1988/MisakaNet/issues/3294)) ([63ea6d1](https://github.com/Ikalus1988/MisakaNet/commit/63ea6d114868702c1de98cad3bdd9b8ca2b436a3)) ## [2.43.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.43.0...v2.43.1) (2026-10-16) ### Bug Fixes * **ci:** 形状门禁把「引用」当成「认领」的误报 —— 引用形态不再命中,真认领仍被抓 ([#3311](https://github.com/Ikalus1988/MisakaNet/issues/3311)) ([7fde252](https://github.com/Ikalus1988/MisakaNet/commit/7fde25245c9fae58befc1b49968ba2bb21f2dc13)) * **schema:** the lesson status enum held three values while the gate enforced six, and the required audit check reads the schema ([#3302](https://github.com/Ikalus1988/MisakaNet/issues/3302)) ([04f203e](https://github.com/Ikalus1988/MisakaNet/commit/04f203effbcc7bb46e24686f1fb930ca52dba954)) ### Documentation * **roadmap:** align the roadmap with the 2026-10-16 re-measurement, and retire one §93.10 row that lived 17 minutes ([#3310](https://github.com/Ikalus1988/MisakaNet/issues/3310)) ([ec7a683](https://github.com/Ikalus1988/MisakaNet/commit/ec7a683e5496fa627bbfd9675cfeafacbf5342b8)) ### Lessons * two intakes become lessons — a saturation cap that amplifies at zero, and initdb under a non-ASCII Windows path ([#3289](https://github.com/Ikalus1988/MisakaNet/issues/3289)) ([07c64ca](https://github.com/Ikalus1988/MisakaNet/commit/07c64caf8fba882527d06ca8301c825fc7c1a8b9)) ## [2.43.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.42.3...v2.43.0) (2026-10-15) ### Features * **bench:** measure whether a relevance floor could separate [#2790](https://github.com/Ikalus1988/MisakaNet/issues/2790)'s two bands ([#3153](https://github.com/Ikalus1988/MisakaNet/issues/3153)) ([6e4fe3f](https://github.com/Ikalus1988/MisakaNet/commit/6e4fe3f7e71f30ddeab4764d7e2b7f1d6d3492ed)) * **docs:** land the backlog's own measures, re-check the rest, and make the weekly ritual a command ([#3287](https://github.com/Ikalus1988/MisakaNet/issues/3287)) ([d4c397e](https://github.com/Ikalus1988/MisakaNet/commit/d4c397ec2cd4a286a1d348355b74e8819709d37f)) * **domains:** add windows / dsh / android, and require reserved slots to say why ([#3190](https://github.com/Ikalus1988/MisakaNet/issues/3190)) ([4717861](https://github.com/Ikalus1988/MisakaNet/commit/4717861af40e3b412c1ffaf614fd4e37f8d8e5c0)) * **intake:** re-score the intakes an older scorer rejected ([#3226](https://github.com/Ikalus1988/MisakaNet/issues/3226)) ([b94b331](https://github.com/Ikalus1988/MisakaNet/commit/b94b3310d103db438832bf8ee1e97f23d15621bd)) * **leaderboard:** hold the contributor board in D1, not in 1,026 commits ([#3288](https://github.com/Ikalus1988/MisakaNet/issues/3288)) ([fb25972](https://github.com/Ikalus1988/MisakaNet/commit/fb25972113b4c065709415ec60bd78697fd2ec55)) * **mcp:** misakanet_me_inbox — poll an intake without re-submitting (rebase of [#2494](https://github.com/Ikalus1988/MisakaNet/issues/2494)) ([#3259](https://github.com/Ikalus1988/MisakaNet/issues/3259)) ([24c2259](https://github.com/Ikalus1988/MisakaNet/commit/24c22590f37fe1f454505bb12dec5a9e5ef08931)) ### Bug Fixes * **dev-install-test:** derive the dependency assertion instead of pinning four versions ([#3219](https://github.com/Ikalus1988/MisakaNet/issues/3219)) ([2910159](https://github.com/Ikalus1988/MisakaNet/commit/29101593fb0ec4e25016d69cd1f747fe3d3b0acb)) * **intake-scorer:** count `1.` as a list item, not only `-` and `*` ([#3220](https://github.com/Ikalus1988/MisakaNet/issues/3220)) ([d0b3c47](https://github.com/Ikalus1988/MisakaNet/commit/d0b3c4781d9c772064850fcad71644b73163c702)) * **intake:** a test fixture is not a report that scored badly, so give it its own label ([#3239](https://github.com/Ikalus1988/MisakaNet/issues/3239)) ([292569b](https://github.com/Ikalus1988/MisakaNet/commit/292569bdac67211f81b40d3b9723cf512d5b3091)) * **intake:** write `source` as a POSIX path — CI caught this on Windows ([#3257](https://github.com/Ikalus1988/MisakaNet/issues/3257)) ([d7db809](https://github.com/Ikalus1988/MisakaNet/commit/d7db809fbd45a7714cac88001b82e015d72f30c3)) * **quality-gate:** stop labelling lesson submissions as missing acceptance criteria ([#3189](https://github.com/Ikalus1988/MisakaNet/issues/3189)) ([90b7a16](https://github.com/Ikalus1988/MisakaNet/commit/90b7a16512c3e608ec90d70c054e325c7cf21cc5)) * **readme:** give README.zh-CN.md the same 19 badges as the canonical one ([#3154](https://github.com/Ikalus1988/MisakaNet/issues/3154)) ([e580f56](https://github.com/Ikalus1988/MisakaNet/commit/e580f569183d0709013bf30f987d1a9e09e213b7)) * remove two orphan working sets, and repair the generator that made one look stale ([#3256](https://github.com/Ikalus1988/MisakaNet/issues/3256)) ([bbf675e](https://github.com/Ikalus1988/MisakaNet/commit/bbf675e43f507bae701bd6adfd8715b8e08ece29)) * **search:** the path the results print is one a reader can open ([#3225](https://github.com/Ikalus1988/MisakaNet/issues/3225)) ([fa91886](https://github.com/Ikalus1988/MisakaNet/commit/fa918869c362104f8d93a9f2f2b4ef7014a92060)) * three stale surfaces — a benchmark index, two counts, three dead commands ([#3252](https://github.com/Ikalus1988/MisakaNet/issues/3252)) ([aec7449](https://github.com/Ikalus1988/MisakaNet/commit/aec7449b76fd94678418aaea89c53981c598e20b)) * two files I edited in an earlier change were committed as CRLF ([#3221](https://github.com/Ikalus1988/MisakaNet/issues/3221)) ([4888163](https://github.com/Ikalus1988/MisakaNet/commit/488816332c9dda31ece47abc8cb95e781e9fb409)) * **worker:** the page onboarding grants a 30-day token, and the 401 says how to recover ([#3234](https://github.com/Ikalus1988/MisakaNet/issues/3234)) ([c14b29d](https://github.com/Ikalus1988/MisakaNet/commit/c14b29de298afabeff3e57e73b6aa9064aaecbae)) ### Documentation * **handoff:** split both monoliths and enforce the 800-line limit ([#3229](https://github.com/Ikalus1988/MisakaNet/issues/3229)) ([5290b2c](https://github.com/Ikalus1988/MisakaNet/commit/5290b2cf4ec1e3c2dc93348f0e7fb2c83cca9a28)) * **handoff:** the four rules the owner decided, and the citations that constrain the split ([#3227](https://github.com/Ikalus1988/MisakaNet/issues/3227)) ([48c1b51](https://github.com/Ikalus1988/MisakaNet/commit/48c1b51104c00f1e6b0ff814b6957ca72d8855f0)) * **reputation:** the contributor snapshot is not a published board ([#3127](https://github.com/Ikalus1988/MisakaNet/issues/3127)) ([3a2a631](https://github.com/Ikalus1988/MisakaNet/commit/3a2a6317ba08ef5fa9251ea5266eb84ee9a85aca)) ### Tests * **search:** pin that the displayed score is relative to its own result set ([#3230](https://github.com/Ikalus1988/MisakaNet/issues/3230)) ([5fcd91e](https://github.com/Ikalus1988/MisakaNet/commit/5fcd91e7679d1ac0d97e287fe464fdd78e57dd1d)), closes [#2790](https://github.com/Ikalus1988/MisakaNet/issues/2790) ### Lessons * an event count is not a health signal — auto-remediation restarts a healthy service ([#3280](https://github.com/Ikalus1988/MisakaNet/issues/3280)) ([9d51fef](https://github.com/Ikalus1988/MisakaNet/commit/9d51fefb09ebcd598ea85502a63701e17046f950)) * Ruby require_relative + docker port already allocated (rebase of [#2921](https://github.com/Ikalus1988/MisakaNet/issues/2921)) ([#3258](https://github.com/Ikalus1988/MisakaNet/issues/3258)) ([44d4cc0](https://github.com/Ikalus1988/MisakaNet/commit/44d4cc01cd5f85032f0dec315b9baa6037585006)) ## [2.42.3](https://github.com/Ikalus1988/MisakaNet/compare/v2.42.2...v2.42.3) (2026-10-10) ### Bug Fixes * **ci:** a path the workflow-script checker could not resolve was reported as clean ([#2975](https://github.com/Ikalus1988/MisakaNet/issues/2975)) ([f9e4ea0](https://github.com/Ikalus1988/MisakaNet/commit/f9e4ea0aa8b1b9050a968d7ab4bbb472ad057f88)), closes [#2940](https://github.com/Ikalus1988/MisakaNet/issues/2940) * **ci:** close /review and friends to unprivileged commenters, and bound the runner ([#2953](https://github.com/Ikalus1988/MisakaNet/issues/2953)) ([93c7cd8](https://github.com/Ikalus1988/MisakaNet/commit/93c7cd893810c4b28c08d40a8efc707a46dddd17)) * **ci:** close the script-injection class in run: bodies, guard it, and restore the [#1920](https://github.com/Ikalus1988/MisakaNet/issues/1920) guard's sight of pr-checks.yml ([#2938](https://github.com/Ikalus1988/MisakaNet/issues/2938)) ([5517ec2](https://github.com/Ikalus1988/MisakaNet/commit/5517ec2687e175e86c06b8edb5bdfe4306acfcd0)) * **ci:** FR3 read one directory while the leak was in three ([#3011](https://github.com/Ikalus1988/MisakaNet/issues/3011)) ([#3029](https://github.com/Ikalus1988/MisakaNet/issues/3029)) ([40f500b](https://github.com/Ikalus1988/MisakaNet/commit/40f500b026821475cc45770b46dd6da2356e8ec0)) * **ci:** the credential gate reported "no secrets found" about files it never opened ([#2971](https://github.com/Ikalus1988/MisakaNet/issues/2971)) ([2f48a0f](https://github.com/Ikalus1988/MisakaNet/commit/2f48a0fad898d2a5231be55e97dca567467223ab)), closes [#2940](https://github.com/Ikalus1988/MisakaNet/issues/2940) * **ci:** the lesson lint step discarded its own verdict, twice ([#2940](https://github.com/Ikalus1988/MisakaNet/issues/2940) §4) ([#2979](https://github.com/Ikalus1988/MisakaNet/issues/2979)) ([a92c0cc](https://github.com/Ikalus1988/MisakaNet/commit/a92c0cc79ef669d8902ee602e3fdfbebcecc67fa)) * **ci:** the pinning advisory's filter was dead, and the suggested repair makes it worse ([#2959](https://github.com/Ikalus1988/MisakaNet/issues/2959)) ([02afebc](https://github.com/Ikalus1988/MisakaNet/commit/02afebc2030887d8d350cb73d3c0549d8539a387)) * **ci:** the retry action could not run a script containing a double quote, and the notify it carries failed silently ([#2955](https://github.com/Ikalus1988/MisakaNet/issues/2955)) ([4fbcaa0](https://github.com/Ikalus1988/MisakaNet/commit/4fbcaa0469013391633477bf16ec1f149d11a97a)) * **cli:** a usage error that named every valid command and could not be acted on ([#2858](https://github.com/Ikalus1988/MisakaNet/issues/2858)) ([#2993](https://github.com/Ikalus1988/MisakaNet/issues/2993)) ([0754205](https://github.com/Ikalus1988/MisakaNet/commit/075420528bc3f6c9365faf4b1235338d61e296f1)) * **docs:** the phase-5 handoff reached main carrying the path it warns about ([#3035](https://github.com/Ikalus1988/MisakaNet/issues/3035)) ([354a3f3](https://github.com/Ikalus1988/MisakaNet/commit/354a3f39503c06980f029aedad86a5ceee93dbc6)) * **dsh:** an unresolvable MCP client returned silently, leaving no way to tell "absent" from "broken" ([#3009](https://github.com/Ikalus1988/MisakaNet/issues/3009)) ([2155185](https://github.com/Ikalus1988/MisakaNet/commit/21551853e6ea2f6ba8f9d911d2a0cff3618298e6)), closes [#2759](https://github.com/Ikalus1988/MisakaNet/issues/2759) * **export:** the OKF frontmatter parser was hand-rolled, and it lost the receipt chain ([#3004](https://github.com/Ikalus1988/MisakaNet/issues/3004)) ([#3061](https://github.com/Ikalus1988/MisakaNet/issues/3061)) ([093ef4a](https://github.com/Ikalus1988/MisakaNet/commit/093ef4af19df44c36374f6894e35dde419d0a80a)) * **lessons:** three lessons answer their intakes but cite no issue, so no receipt is sent ([#3003](https://github.com/Ikalus1988/MisakaNet/issues/3003)) ([2ff3943](https://github.com/Ikalus1988/MisakaNet/commit/2ff394364e7aef12415ec863042caae1287e47bb)) * **mcp:** four methods the dispatcher answers were unreachable behind the 401 gate ([#2963](https://github.com/Ikalus1988/MisakaNet/issues/2963)) ([#2980](https://github.com/Ikalus1988/MisakaNet/issues/2980)) ([6a23969](https://github.com/Ikalus1988/MisakaNet/commit/6a23969263048064155609c4bb3acdb3618520c4)) * **mcp:** minProperties cost one client every tool this server offers ([#2967](https://github.com/Ikalus1988/MisakaNet/issues/2967)) ([#2976](https://github.com/Ikalus1988/MisakaNet/issues/2976)) ([266b605](https://github.com/Ikalus1988/MisakaNet/commit/266b60562edb464c6046bdd6926f4b673560ddff)) * **mcp:** tools/list and tools/call omitted fields the advertised version requires ([#2968](https://github.com/Ikalus1988/MisakaNet/issues/2968)) ([#2977](https://github.com/Ikalus1988/MisakaNet/issues/2977)) ([a6dfcf3](https://github.com/Ikalus1988/MisakaNet/commit/a6dfcf38396abe4252b19e2ee7fea8718c60f43e)) * **preflight:** a lesson index that could not be read was reported as "no risk lesson" ([#2940](https://github.com/Ikalus1988/MisakaNet/issues/2940)) ([#2978](https://github.com/Ikalus1988/MisakaNet/issues/2978)) ([98b6a93](https://github.com/Ikalus1988/MisakaNet/commit/98b6a93b959c44707df9bb8e7ae365e928bb1e0c)) * **provenance:** parse hostname using urlsplit to prevent SSRF guard bypass ([#2960](https://github.com/Ikalus1988/MisakaNet/issues/2960)) ([b4111b3](https://github.com/Ikalus1988/MisakaNet/commit/b4111b38d8bc165554a53761322fdf3233b36bbf)) * **release:** lesson commits were silently dropped, and one commit listed twice ([#3118](https://github.com/Ikalus1988/MisakaNet/issues/3118)) ([c7f6230](https://github.com/Ikalus1988/MisakaNet/commit/c7f6230acac45d5abb88671836522977e9e0a9d1)), closes [#2951](https://github.com/Ikalus1988/MisakaNet/issues/2951) * **search:** a query containing "usage" was zeroing the whole FAQ corpus ([#3001](https://github.com/Ikalus1988/MisakaNet/issues/3001)) ([#3043](https://github.com/Ikalus1988/MisakaNet/issues/3043)) ([a91baa5](https://github.com/Ikalus1988/MisakaNet/commit/a91baa5be4ba9bcd924aed605faff0be94b56219)) * **search:** the evidence filter matched words the corpus never uses, so it dropped everything ([#3056](https://github.com/Ikalus1988/MisakaNet/issues/3056)) ([dcaa7ee](https://github.com/Ikalus1988/MisakaNet/commit/dcaa7eeda7320213dd21049c15def2034783ddec)) * **sync:** the dedup hash was computed over different bytes on each side, twice ([#2983](https://github.com/Ikalus1988/MisakaNet/issues/2983)) ([#2987](https://github.com/Ikalus1988/MisakaNet/issues/2987)) ([73a4545](https://github.com/Ikalus1988/MisakaNet/commit/73a4545969633b910f7bb9cc3d7c2f954d388822)) * **sync:** the two paths disagreed about the same labelled issue ([#3012](https://github.com/Ikalus1988/MisakaNet/issues/3012)) ([#3062](https://github.com/Ikalus1988/MisakaNet/issues/3062)) ([d7fe462](https://github.com/Ikalus1988/MisakaNet/commit/d7fe462e8310e8a32413433d73328be7546f6b49)) * **test:** the burst-limit test assumed a clock it does not control ([#3066](https://github.com/Ikalus1988/MisakaNet/issues/3066)) ([9adcef7](https://github.com/Ikalus1988/MisakaNet/commit/9adcef7e8fee2e919ecae10006a5c175f2b3977d)) * **verify:** run_verification returned a 3-tuple and raised at both call sites ([#2952](https://github.com/Ikalus1988/MisakaNet/issues/2952)) ([9c160e3](https://github.com/Ikalus1988/MisakaNet/commit/9c160e30b3ab26b23d9c5e09a1799f077ae5c25a)) ### Documentation * **field-reports:** scope the claims this report cannot support, instead of leaving them over-claimed ([#3011](https://github.com/Ikalus1988/MisakaNet/issues/3011)) ([#3036](https://github.com/Ikalus1988/MisakaNet/issues/3036)) ([f61bada](https://github.com/Ikalus1988/MisakaNet/commit/f61bada4bb97f2df8665b785d993aec0a96ffbb6)) * **handoff:** phase 4 — ten §3.1 closures, the delivery half proven in production, and seven bad judgment criteria ([#3010](https://github.com/Ikalus1988/MisakaNet/issues/3010)) ([83bcfc6](https://github.com/Ikalus1988/MisakaNet/commit/83bcfc6aaf88619885004542c89933258c47b919)) * **readme:** drop a 6 MB recording that advertises 235 lessons out of 469 ([#2990](https://github.com/Ikalus1988/MisakaNet/issues/2990)) ([e71bd09](https://github.com/Ikalus1988/MisakaNet/commit/e71bd09c64d32158f54a6765c3cdc52b36d42e14)) ### Tests * **okf:** the [#3004](https://github.com/Ikalus1988/MisakaNet/issues/3004) guard was only as broad as its own regex ([#3064](https://github.com/Ikalus1988/MisakaNet/issues/3064)) ([68d09a3](https://github.com/Ikalus1988/MisakaNet/commit/68d09a35e22778f45f0ec970b5297efdcfd75790)) ### Lessons * a doc link to the run's own output is not a broken link ([#2258](https://github.com/Ikalus1988/MisakaNet/issues/2258)) ([#3037](https://github.com/Ikalus1988/MisakaNet/issues/3037)) ([4149d2d](https://github.com/Ikalus1988/MisakaNet/commit/4149d2dc9d7f65c380fd1e6e3a62485f0ee2502c)) * a failed later hunk does not mean earlier files are untouched ([#2469](https://github.com/Ikalus1988/MisakaNet/issues/2469)) ([#3039](https://github.com/Ikalus1988/MisakaNet/issues/3039)) ([213c7c0](https://github.com/Ikalus1988/MisakaNet/commit/213c7c0768f998217e9e1be8c611fd6ecc81efdf)) * a port that is already allocated is EADDRINUSE — name the holder with ss, free it, retry ([#2804](https://github.com/Ikalus1988/MisakaNet/issues/2804)) ([#3016](https://github.com/Ikalus1988/MisakaNet/issues/3016)) ([c446d61](https://github.com/Ikalus1988/MisakaNet/commit/c446d61c435d3046245b2a7628001be8849bdd56)) * crypto/Web3 bounty settlement ([#2629](https://github.com/Ikalus1988/MisakaNet/issues/2629)) ([#2662](https://github.com/Ikalus1988/MisakaNet/issues/2662)) ([c6c0195](https://github.com/Ikalus1988/MisakaNet/commit/c6c019561612aee950e02e5d86a6580b649a6add)) * git diff --check misses removed-line whitespace, and -w hides string content ([#2256](https://github.com/Ikalus1988/MisakaNet/issues/2256)) ([#3007](https://github.com/Ikalus1988/MisakaNet/issues/3007)) ([1efb11d](https://github.com/Ikalus1988/MisakaNet/commit/1efb11d851f83db8e634a3aaeabf02c0de44d6fc)) * PID-kill by LLM-API inference terminates own turn ([#3038](https://github.com/Ikalus1988/MisakaNet/issues/3038)) ([4007582](https://github.com/Ikalus1988/MisakaNet/commit/4007582ecd33e6760c271de11e08c962b47408f2)), closes [#2871](https://github.com/Ikalus1988/MisakaNet/issues/2871) [#2864](https://github.com/Ikalus1988/MisakaNet/issues/2864) * README --profile name verbatim installs into unloaded profile (closes [#2865](https://github.com/Ikalus1988/MisakaNet/issues/2865)) ([#3040](https://github.com/Ikalus1988/MisakaNet/issues/3040)) ([0f4490c](https://github.com/Ikalus1988/MisakaNet/commit/0f4490cb5f837b96478a78cf7a52cdf36482e60d)) * six contributor submissions, rebuilt on current main ([#3072](https://github.com/Ikalus1988/MisakaNet/issues/3072)) ([23c9d0a](https://github.com/Ikalus1988/MisakaNet/commit/23c9d0a0863989af93b8836d24db78c6a2d4eed8)) * three checks that were green and covered nothing ([#2932](https://github.com/Ikalus1988/MisakaNet/issues/2932)) ([d39fdce](https://github.com/Ikalus1988/MisakaNet/commit/d39fdcec1be8077fd4aabc0f96c3cac80b4226d1)) ## [2.42.2](https://github.com/Ikalus1988/MisakaNet/compare/v2.42.1...v2.42.2) (2026-10-06) ### Bug Fixes * **deps:** bump sharp override to 0.35.5 — librsvg CVE-2026-96889 ([#2927](https://github.com/Ikalus1988/MisakaNet/issues/2927)) ([9862421](https://github.com/Ikalus1988/MisakaNet/commit/9862421946ccb535d0ca58a57469a2283e8f5974)) * **integrations:** render the lesson's domain, not a field that does not exist ([#2931](https://github.com/Ikalus1988/MisakaNet/issues/2931)) ([4ad283b](https://github.com/Ikalus1988/MisakaNet/commit/4ad283b732ada65cdeeb55382024c8dd4800cb31)) * **release:** keep package-lock.json on the release line ([#2929](https://github.com/Ikalus1988/MisakaNet/issues/2929)) ([e807096](https://github.com/Ikalus1988/MisakaNet/commit/e807096ca9b3e9d587337c3a25c9a9229b842a94)) ## [2.42.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.42.0...v2.42.1) (2026-10-06) ### Bug Fixes * **site,ci:** three verified intake defects from [#2915](https://github.com/Ikalus1988/MisakaNet/issues/2915)-[#2918](https://github.com/Ikalus1988/MisakaNet/issues/2918) ([#2915](https://github.com/Ikalus1988/MisakaNet/issues/2915) is not ours) ([#2920](https://github.com/Ikalus1988/MisakaNet/issues/2920)) ([f64dddc](https://github.com/Ikalus1988/MisakaNet/commit/f64dddce5ecada997e8cb50d9385ba176c39eb35)) * **test:** the CSP gate read 0/532 on Windows and 521/532 on Linux ([#2919](https://github.com/Ikalus1988/MisakaNet/issues/2919)) ([9c53a16](https://github.com/Ikalus1988/MisakaNet/commit/9c53a16a70f95e6d10bc95c5765e5ea1c521c46e)), closes [#2914](https://github.com/Ikalus1988/MisakaNet/issues/2914) ### Documentation * stop denying the reward banner the automation attaches to every issue ([#2912](https://github.com/Ikalus1988/MisakaNet/issues/2912)) ([2bf1cae](https://github.com/Ikalus1988/MisakaNet/commit/2bf1caec5222146c2afddc75db859f3435f6b787)) ### CI/CD * measure Workers CPU per script, closing the half of [#2897](https://github.com/Ikalus1988/MisakaNet/issues/2897) that was unmeasurable ([#2911](https://github.com/Ikalus1988/MisakaNet/issues/2911)) ([3fd281e](https://github.com/Ikalus1988/MisakaNet/commit/3fd281ea6a039c5c40695be9bb623433c1bcf053)) * pr-quality-gate cancelled its own check, and gh reported that as fail ([#2922](https://github.com/Ikalus1988/MisakaNet/issues/2922)) ([fd1738e](https://github.com/Ikalus1988/MisakaNet/commit/fd1738e8424daeae357456cf12193a76429214a8)), closes [#2913](https://github.com/Ikalus1988/MisakaNet/issues/2913) ## [2.42.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.41.3...v2.42.0) (2026-10-06) ### Features * generate the README benchmark table from latest.json ([#2904](https://github.com/Ikalus1988/MisakaNet/issues/2904)) ([3d8abd9](https://github.com/Ikalus1988/MisakaNet/commit/3d8abd9ffb4ca694da8775c16b48d5e79afa84bb)) ### Bug Fixes * stop a handoff document from opening a release PR ([#2905](https://github.com/Ikalus1988/MisakaNet/issues/2905)) ([9ceee5a](https://github.com/Ikalus1988/MisakaNet/commit/9ceee5aaa6795438e9294972d8da285b31005f13)) * **worker:** server/discover was missing four of DiscoverResult's five required fields ([#2896](https://github.com/Ikalus1988/MisakaNet/issues/2896)) ([68a7f2f](https://github.com/Ikalus1988/MisakaNet/commit/68a7f2f281922a7bd28835662500b0b3152c854e)) ### Documentation * four self-referential staleness bugs, and a gate so the fifth one is caught ([#2902](https://github.com/Ikalus1988/MisakaNet/issues/2902)) ([372e048](https://github.com/Ikalus1988/MisakaNet/commit/372e048b7b370ea3bb5da0322a8288af12d2561c)) * **lesson:** the silent-truncation family in the MCP intake worker ([#2849](https://github.com/Ikalus1988/MisakaNet/issues/2849)) ([bbecb11](https://github.com/Ikalus1988/MisakaNet/commit/bbecb11892b83b2a2e4fc12b58b4321f5336ba42)) ### CI/CD * gate uv.lock drift, exempting the version release-please owns ([#2906](https://github.com/Ikalus1988/MisakaNet/issues/2906)) ([3f2d566](https://github.com/Ikalus1988/MisakaNet/commit/3f2d566ed493fe8972aa3793d9e2677b77232639)) ## [2.41.3](https://github.com/Ikalus1988/MisakaNet/compare/v2.41.2...v2.41.3) (2026-10-05) ### Bug Fixes * **ci:** name the branch the freshness probe measures against ([#2877](https://github.com/Ikalus1988/MisakaNet/issues/2877)) ([a57494d](https://github.com/Ikalus1988/MisakaNet/commit/a57494d37cbce1fbcb22588a70e597486f2777f9)) * **ci:** stop a Windows checkout from turning shell scripts into a red suite ([#2881](https://github.com/Ikalus1988/MisakaNet/issues/2881)) ([81b239e](https://github.com/Ikalus1988/MisakaNet/commit/81b239e2d16b3986987004438558f026ec17596f)) * **ci:** the approval watcher rewrote its report and told nobody ([#2885](https://github.com/Ikalus1988/MisakaNet/issues/2885)) ([4fce44f](https://github.com/Ikalus1988/MisakaNet/commit/4fce44f95faf50308d2cb60fb7964baa23d20909)) * **docs:** the first-run path must not demand a token or a bare pip ([#2003](https://github.com/Ikalus1988/MisakaNet/issues/2003), items 1 and 2) ([#2884](https://github.com/Ikalus1988/MisakaNet/issues/2884)) ([56d2265](https://github.com/Ikalus1988/MisakaNet/commit/56d22656ce420a3193f880e1a502516999593b7a)) * **worker:** server/discover has a handler, so let an anonymous session reach it ([#2845](https://github.com/Ikalus1988/MisakaNet/issues/2845)) ([#2882](https://github.com/Ikalus1988/MisakaNet/issues/2882)) ([87fffdd](https://github.com/Ikalus1988/MisakaNet/commit/87fffdd29f9b8de88324597543fccd1f362a0679)) ### Tests * **gate:** assert the L2 loader's stdout purity where it lives, not where a backend happens to lead ([#2880](https://github.com/Ikalus1988/MisakaNet/issues/2880)) ([a952358](https://github.com/Ikalus1988/MisakaNet/commit/a952358e70912453c637b4c63ce975a9a1ab8d89)) ## [2.41.2](https://github.com/Ikalus1988/MisakaNet/compare/v2.41.1...v2.41.2) (2026-10-05) ### Bug Fixes * **ci:** the freshness probe depends on a cron that has never fired ([#2827](https://github.com/Ikalus1988/MisakaNet/issues/2827)) ([4a8e574](https://github.com/Ikalus1988/MisakaNet/commit/4a8e5749a452c10ec803e140bbf0c550cf7e6ddf)) * **gate:** the last handoff citation that resolves to nothing ([#2848](https://github.com/Ikalus1988/MisakaNet/issues/2848)) ([08be28a](https://github.com/Ikalus1988/MisakaNet/commit/08be28a18ba59250cfb333244b46a7620d2f9b87)) * **worker:** the last silent clip in the intake path was on the assembled body ([#2829](https://github.com/Ikalus1988/MisakaNet/issues/2829)) ([82cee67](https://github.com/Ikalus1988/MisakaNet/commit/82cee67f299cbdb40f410af28c5ff419a66cd861)) ### Documentation * **agents:** a way to verify the five MCP-only clients, and an honest gap ([#2822](https://github.com/Ikalus1988/MisakaNet/issues/2822)) ([baf4436](https://github.com/Ikalus1988/MisakaNet/commit/baf443675daba84d8784caecd3958a27706353ee)) * **readme:** re-sync the Japanese README to the English source of truth ([#2824](https://github.com/Ikalus1988/MisakaNet/issues/2824)) ([8b3b781](https://github.com/Ikalus1988/MisakaNet/commit/8b3b7811e2c2cef1f398ca910b6a8a32848ba2f1)) ### CI/CD * **registry:** pin the advertised tool surface to the one we actually serve ([#2823](https://github.com/Ikalus1988/MisakaNet/issues/2823)) ([e84b24b](https://github.com/Ikalus1988/MisakaNet/commit/e84b24ba502cc25864464643ac44e61ce71d8911)) ## [2.41.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.41.0...v2.41.1) (2026-10-04) ### Bug Fixes * **docs:** three current documents told readers to install a version two releases old ([#2814](https://github.com/Ikalus1988/MisakaNet/issues/2814)) ([22f51f5](https://github.com/Ikalus1988/MisakaNet/commit/22f51f5ebc0baec17f189e8c4e1c18ff0849bcfd)) * **lessons:** a sibling link pointed at a lesson that had been renamed ([#2812](https://github.com/Ikalus1988/MisakaNet/issues/2812)) ([206d721](https://github.com/Ikalus1988/MisakaNet/commit/206d7214d5d2c680bb44d9f1a5614b20655bc556)) * **lessons:** the lesson writer offered a status the quality gate rejects ([#2809](https://github.com/Ikalus1988/MisakaNet/issues/2809)) ([f6660d2](https://github.com/Ikalus1988/MisakaNet/commit/f6660d2e1aeca10a805e7a00735060bdd930451d)) * **tests:** the DSH-home guard verified nothing when the checkout lived in /tmp ([#2815](https://github.com/Ikalus1988/MisakaNet/issues/2815)) ([0fff7ee](https://github.com/Ikalus1988/MisakaNet/commit/0fff7ee6e189472b8060740ebd61d26619521d54)) * **tests:** the status guard failed on CI's 3.12 runners — follow-up to f6660d2e1a ([#2811](https://github.com/Ikalus1988/MisakaNet/issues/2811)) ([0a41326](https://github.com/Ikalus1988/MisakaNet/commit/0a41326a0a205d507f1ebdbf5becb4386c9ae362)) * **tests:** the stdout-purity guard failed on every Windows runner ([#2813](https://github.com/Ikalus1988/MisakaNet/issues/2813)) ([fe2c755](https://github.com/Ikalus1988/MisakaNet/commit/fe2c755d1a26596b46e8cad58cd8378d7ba99459)) * **worker:** a lesson section was sheared at 2,000 characters too — silently ([#2817](https://github.com/Ikalus1988/MisakaNet/issues/2817)) ([f0317d3](https://github.com/Ikalus1988/MisakaNet/commit/f0317d366de1f333665e2d890498f4c0512b429e)) * **worker:** the MCP intake path sheared submissions at 2,000 characters, silently ([#2816](https://github.com/Ikalus1988/MisakaNet/issues/2816)) ([f3453ae](https://github.com/Ikalus1988/MisakaNet/commit/f3453ae54a5ee004405f6bbc106bdaab43376d90)) ### Refactoring * **search:** one search implementation — keep KV BM25 ([#2690](https://github.com/Ikalus1988/MisakaNet/issues/2690)) ([158b436](https://github.com/Ikalus1988/MisakaNet/commit/158b43604ccf93bb213df7577e5413aa77c400ce)) ## [2.41.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.40.0...v2.41.0) (2026-10-04) ### Features * add error-signature normalizer for stable failure-class recall ([#1654](https://github.com/Ikalus1988/MisakaNet/issues/1654)) ([#2567](https://github.com/Ikalus1988/MisakaNet/issues/2567)) ([4ea2f85](https://github.com/Ikalus1988/MisakaNet/commit/4ea2f85b085667e5a47f0660f63ecd0399986f67)) * **deploy:** make a stale production detectable by commit SHA, not by version ([#2787](https://github.com/Ikalus1988/MisakaNet/issues/2787)) ([e040847](https://github.com/Ikalus1988/MisakaNet/commit/e04084785b731ee9fa7543161f2b67eef4b6b2e5)), closes [#2779](https://github.com/Ikalus1988/MisakaNet/issues/2779) * **docs:** add freshness gate for managed documentation ([#2082](https://github.com/Ikalus1988/MisakaNet/issues/2082)) ([#2485](https://github.com/Ikalus1988/MisakaNet/issues/2485)) ([7f84ef0](https://github.com/Ikalus1988/MisakaNet/commit/7f84ef0b0c18e00db0c5aed6541c977ae6a594ae)) * **dsh:** a MisakaNet preference row in Settings → General ([#2600](https://github.com/Ikalus1988/MisakaNet/issues/2600)) ([a43c50d](https://github.com/Ikalus1988/MisakaNet/commit/a43c50dd34b02bcd69755b5a1934784685ef57b3)) * **dsh:** name the session the footer copies, and hand over a patch snippet ([#2618](https://github.com/Ikalus1988/MisakaNet/issues/2618)) ([47cf5fc](https://github.com/Ikalus1988/MisakaNet/commit/47cf5fc8f979f751448d471bd37dd6a73c845ea5)) * **dsh:** the /misakanet command, answered in the composer ([#2598](https://github.com/Ikalus1988/MisakaNet/issues/2598)) ([d2367e3](https://github.com/Ikalus1988/MisakaNet/commit/d2367e3458c70ced9c9cf17c0a829646cac5b300)) * **dsh:** the MisakaNet surfaces follow the host language ([#2602](https://github.com/Ikalus1988/MisakaNet/issues/2602)) ([b545e87](https://github.com/Ikalus1988/MisakaNet/commit/b545e87b1c82aefd9421d584596789258f747d99)) * **intake:** stop filing an open issue for every submission that arrives ([#2761](https://github.com/Ikalus1988/MisakaNet/issues/2761)) ([4210012](https://github.com/Ikalus1988/MisakaNet/commit/42100121377b2f8efffa76eec3ad7b52bf7f54e2)) * **site:** network activity trend + read-only token scope ([#2521](https://github.com/Ikalus1988/MisakaNet/issues/2521)) ([#2692](https://github.com/Ikalus1988/MisakaNet/issues/2692)) ([88b3600](https://github.com/Ikalus1988/MisakaNet/commit/88b360004e7c878e205e2adcbb0fc4a6d589430c)) * **site:** publish the lesson-id aliases as a 301 table, not 111 stub pages ([#2795](https://github.com/Ikalus1988/MisakaNet/issues/2795)) ([6870e20](https://github.com/Ikalus1988/MisakaNet/commit/6870e20a352f6cf16ddc4d05ed3328d30783565d)) ### Bug Fixes * **ci:** client-e2e 的 scope 步骤让每个 PR 都变红 —— 浅取把要比较的 merge base 删掉了 ([#2701](https://github.com/Ikalus1988/MisakaNet/issues/2701)) ([d0e5b64](https://github.com/Ikalus1988/MisakaNet/commit/d0e5b64c8dffa8c0c8b15628ab04e644c54c27bb)) * **ci:** six one-page GitHub list reads; one of them is why PR [#2020](https://github.com/Ikalus1988/MisakaNet/issues/2020) has 113 audit reports ([#2801](https://github.com/Ikalus1988/MisakaNet/issues/2801)) ([8dcb67d](https://github.com/Ikalus1988/MisakaNet/commit/8dcb67d29f9123d33d44463d8050bfe76a075a57)) * **ci:** sync PR branches six-hourly, and never push to a PR that can already merge ([#2588](https://github.com/Ikalus1988/MisakaNet/issues/2588)) ([1bab70f](https://github.com/Ikalus1988/MisakaNet/commit/1bab70fba92c651e8c3efae7aeb8e407ff4d7728)) * **ci:** the worker secret gate was reading 6% of the worker code, and two MCP controls had no test ([#2731](https://github.com/Ikalus1988/MisakaNet/issues/2731)) ([3dc5c12](https://github.com/Ikalus1988/MisakaNet/commit/3dc5c126f8f36ed9d1b78ec785e80c0f7f3e14a2)) * **ci:** 门禁现在真的跑它声称跑的东西 —— 两个死测试文件、一个死套件、一个错的 TOTAL ([#2682](https://github.com/Ikalus1988/MisakaNet/issues/2682)) ([2ef4669](https://github.com/Ikalus1988/MisakaNet/commit/2ef46691a9170802660db124da9f9fbc963efd59)) * **d1:** sync 的 SQL 以注释收尾,且三个 push 同时同步(automation 变红的根因) ([#2709](https://github.com/Ikalus1988/MisakaNet/issues/2709)) ([63d7817](https://github.com/Ikalus1988/MisakaNet/commit/63d7817fa3d2345b7f1145197d8bd9ee3b1d9e54)) * **docs:** update stale version numbers and mark dated eval ([#2345](https://github.com/Ikalus1988/MisakaNet/issues/2345)) ([#2793](https://github.com/Ikalus1988/MisakaNet/issues/2793)) ([2a0be3b](https://github.com/Ikalus1988/MisakaNet/commit/2a0be3b27dec2c0b8a60ccf63285727fb1eb718e)) * **dsh:** the Config gate and the resolver must import through a file URL, not a path ([#2609](https://github.com/Ikalus1988/MisakaNet/issues/2609)) ([63bbc23](https://github.com/Ikalus1988/MisakaNet/commit/63bbc23178b2fd83a6e1a89170b991b614b4b89f)) * **index:** 本地索引是仓库的课程,不是这块盘上的课程(P7) ([#2708](https://github.com/Ikalus1988/MisakaNet/issues/2708)) ([9d1f6d6](https://github.com/Ikalus1988/MisakaNet/commit/9d1f6d6c2c0013c6d104e34adfec091ca6a020b9)) * **infra:** the site-build watcher stopped seeing builds past 100 check-runs ([#2797](https://github.com/Ikalus1988/MisakaNet/issues/2797)) ([70ccb4b](https://github.com/Ikalus1988/MisakaNet/commit/70ccb4bf202fe84487e82c302f8d435040c2d4e8)) * **infra:** the site-build watcher's state memory was one page deep ([#2797](https://github.com/Ikalus1988/MisakaNet/issues/2797) follow-up) ([#2800](https://github.com/Ikalus1988/MisakaNet/issues/2800)) ([e4cd52c](https://github.com/Ikalus1988/MisakaNet/commit/e4cd52ca134f0ab9dacc88f31e391e146990a29f)) * **intake-bot:** subject-word coverage gate + pin the sim scale ([#2643](https://github.com/Ikalus1988/MisakaNet/issues/2643)) ([#2646](https://github.com/Ikalus1988/MisakaNet/issues/2646)) ([101f1df](https://github.com/Ikalus1988/MisakaNet/commit/101f1dfca85e781e80046b9ff69938c69fe9ebf1)) * **intake-bot:** 覆盖门认技术栈词 —— 修 [#2646](https://github.com/Ikalus1988/MisakaNet/issues/2646) 复验发现的漏报 + §8.1 自检输出失效 ([#2657](https://github.com/Ikalus1988/MisakaNet/issues/2657)) ([eff1485](https://github.com/Ikalus1988/MisakaNet/commit/eff14857aa73fc63f3374c1a50e6f570bc169499)) * **intake:** a question body clipped at 2,000 chars still looked answerable ([#2749](https://github.com/Ikalus1988/MisakaNet/issues/2749)) ([a9f2e09](https://github.com/Ikalus1988/MisakaNet/commit/a9f2e09e41f86512a98e7c69f7a800c3f8f12e6c)), closes [#2743](https://github.com/Ikalus1988/MisakaNet/issues/2743) * **intake:** a receipt that never posted must not be recorded as delivered ([#2783](https://github.com/Ikalus1988/MisakaNet/issues/2783)) ([f739928](https://github.com/Ikalus1988/MisakaNet/commit/f73992830da93ecb56a45bb37d5a6486e2639352)) * **makefile:** make deploy stop pointing at paths that do not exist ([#2694](https://github.com/Ikalus1988/MisakaNet/issues/2694)) ([59f906f](https://github.com/Ikalus1988/MisakaNet/commit/59f906f54abf11cf3af74818497b72aa5a91b6a9)) * **mcp:** a cache notice was being printed into the JSON-RPC stream ([#2806](https://github.com/Ikalus1988/MisakaNet/issues/2806)) ([c4a4451](https://github.com/Ikalus1988/MisakaNet/commit/c4a44511e350a94a8d285bba77f8b594bfcfbb75)) * **mcp:** compact search results must carry the score the schema promises ([#2790](https://github.com/Ikalus1988/MisakaNet/issues/2790)) ([#2799](https://github.com/Ikalus1988/MisakaNet/issues/2799)) ([f749f33](https://github.com/Ikalus1988/MisakaNet/commit/f749f33e14d7269253d1b2316621e45466147b00)) * **search:** BM25 failure must not look like "no match"; drop two dead blocks ([#2696](https://github.com/Ikalus1988/MisakaNet/issues/2696)) ([4151268](https://github.com/Ikalus1988/MisakaNet/commit/4151268387c685ac8228a0fed608e41b7d0f3b3c)) * **site:** a non-published lesson page must say so, like the API already does ([#2794](https://github.com/Ikalus1988/MisakaNet/issues/2794)) ([0d85759](https://github.com/Ikalus1988/MisakaNet/commit/0d85759db7a06b6eda1fcfdbce98ff44b47831ea)) * **site:** declare the two dead CSS tokens, gate the six console calls, reserve the avatar box, cache HTML for 5 min ([#2697](https://github.com/Ikalus1988/MisakaNet/issues/2697)) ([9059655](https://github.com/Ikalus1988/MisakaNet/commit/9059655b3fa095e1783b4839e3380e9d76b37be0)) * **sitemap:** advertise /troubleshooting.md, the path that actually serves it ([#2791](https://github.com/Ikalus1988/MisakaNet/issues/2791)) ([accf961](https://github.com/Ikalus1988/MisakaNet/commit/accf9614d7c978a6273df073135174ab5d5a047e)) * **site:** the sitemap advertised 30 lessons that say they are not published ([#2805](https://github.com/Ikalus1988/MisakaNet/issues/2805)) ([eae0b82](https://github.com/Ikalus1988/MisakaNet/commit/eae0b8262d684397541aad0c935ef3db35025a2f)) * **site:** 上手弹窗不再承诺网络做不到的事(并修掉英文读者看到中文) ([#2706](https://github.com/Ikalus1988/MisakaNet/issues/2706)) ([2aad28f](https://github.com/Ikalus1988/MisakaNet/commit/2aad28f14daf445f1348ceb14c402eacb462f12e)) * **site:** 公开首页存储型 XSS —— 任何已关闭 PR 的 title/body 都能执行脚本 ([#2672](https://github.com/Ikalus1988/MisakaNet/issues/2672)) ([a51026c](https://github.com/Ikalus1988/MisakaNet/commit/a51026cc9d54076c1a5abbcf657008955c4af61a)) * **site:** 首页在无鼠标、无动画下也能用(F6 第一片) ([#2710](https://github.com/Ikalus1988/MisakaNet/issues/2710)) ([9d25bd2](https://github.com/Ikalus1988/MisakaNet/commit/9d25bd2e72c7ae46eefd8770fae609f253015349)) * **tests:** the inline-script pattern must match a closing tag that carries whitespace ([#2619](https://github.com/Ikalus1988/MisakaNet/issues/2619)) ([ffc608e](https://github.com/Ikalus1988/MisakaNet/commit/ffc608efb4c30db5b6003ad19b4ab29b99e5443e)) * **worker:** gap cleanup's 500 serial DELETEs become d1.batch() ([#2695](https://github.com/Ikalus1988/MisakaNet/issues/2695)) ([6afa749](https://github.com/Ikalus1988/MisakaNet/commit/6afa749cd83064fc77307f6abe8a6f36a97bb250)) * **worker:** the lessons cache is one D1 row at 91% of the cap — shard it, and stop failing quietly ([#2681](https://github.com/Ikalus1988/MisakaNet/issues/2681)) ([da2258e](https://github.com/Ikalus1988/MisakaNet/commit/da2258e339693bf206de8ec461d30b7697091d50)) * **worker:** the per-address limits become atomic counters, and the source ledger's key space is finite ([#2691](https://github.com/Ikalus1988/MisakaNet/issues/2691)) ([963f9b3](https://github.com/Ikalus1988/MisakaNet/commit/963f9b3c0f3723da16abf95c93107ad2281c2286)) ### Documentation * add Copilot integration recipes for three surfaces ([#1941](https://github.com/Ikalus1988/MisakaNet/issues/1941)) ([#2489](https://github.com/Ikalus1988/MisakaNet/issues/2489)) ([829d6dc](https://github.com/Ikalus1988/MisakaNet/commit/829d6dc471474f92a99d29f118549d6a246ec51d)) * add external pilot feedback report for upgraded-docs-framework ([#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550)) ([#2581](https://github.com/Ikalus1988/MisakaNet/issues/2581)) ([ebf1597](https://github.com/Ikalus1988/MisakaNet/commit/ebf15974107e24c4fc05efc61788930786f57170)) * add OpenCode, Kiro, and Oh-my-Pi integration guides ([#2576](https://github.com/Ikalus1988/MisakaNet/issues/2576)) ([56059f6](https://github.com/Ikalus1988/MisakaNet/commit/56059f67da7342eb57752ac206bd6c95929e86c6)) * **agents:** how to test the DSH client half from a checkout ([#2647](https://github.com/Ikalus1988/MisakaNet/issues/2647)) ([8021b47](https://github.com/Ikalus1988/MisakaNet/commit/8021b474695be76a2f06f3ad8ab4622a1c1617b8)) * **agents:** poll for the client-half host URL instead of grepping once ([#2659](https://github.com/Ikalus1988/MisakaNet/issues/2659)) ([acdc5ad](https://github.com/Ikalus1988/MisakaNet/commit/acdc5ad3b3eee3a32a3d5a19a62d66318d19e968)) * **ci:** 质量门禁表加了一行,声明的行数没跟上 ([#2745](https://github.com/Ikalus1988/MisakaNet/issues/2745)) ([012663e](https://github.com/Ikalus1988/MisakaNet/commit/012663e94d24041632981e12dd5fcb5089d06edb)) * **deploy:** approving the Worker deploy can cancel the run you just approved ([#2668](https://github.com/Ikalus1988/MisakaNet/issues/2668)) ([39a5785](https://github.com/Ikalus1988/MisakaNet/commit/39a5785a92576ffe3dd12aef5ee9c26147110f1e)) * **dsh:** the seat table is seven rows, three of them root ([#2658](https://github.com/Ikalus1988/MisakaNet/issues/2658)) ([fd03c81](https://github.com/Ikalus1988/MisakaNet/commit/fd03c81a8ad097e170c629e29ff56998e1a2101e)) * **external-usage:** how to tell "bot broke" from "nothing to report" ([#2645](https://github.com/Ikalus1988/MisakaNet/issues/2645)) ([#2649](https://github.com/Ikalus1988/MisakaNet/issues/2649)) ([2116718](https://github.com/Ikalus1988/MisakaNet/commit/21167186efa42be22e797581a47d81ec11e366f6)) * **field-reports:** 2.40.0 browser-half six-seat test report on macOS (Refs [#2593](https://github.com/Ikalus1988/MisakaNet/issues/2593)) ([#2693](https://github.com/Ikalus1988/MisakaNet/issues/2693)) ([f548540](https://github.com/Ikalus1988/MisakaNet/commit/f54854057002e0c918e2015ea52e83ce4bc0918d)) * **frontend:** update frontend-status.md to v2.38.0 ([#2440](https://github.com/Ikalus1988/MisakaNet/issues/2440)) ([45ff74e](https://github.com/Ikalus1988/MisakaNet/commit/45ff74ec766d9d823ec5681ad37ebeca5a0afd82)) * **glama:** tell a red build that is Glama's runner from one that is your Dockerfile ([#2638](https://github.com/Ikalus1988/MisakaNet/issues/2638)) ([1fe3886](https://github.com/Ikalus1988/MisakaNet/commit/1fe3886a0518460bda7c96f6c8fc250e4b73bcad)) * **install:** `dsh plugin` requires `--profile`, and the gate pinned the form that cannot run ([#2663](https://github.com/Ikalus1988/MisakaNet/issues/2663)) ([eeaa6a9](https://github.com/Ikalus1988/MisakaNet/commit/eeaa6a958cf9be0dd33736cb645fdc508706c4e9)) * **lessons:** promote 19 triaged intakes into the corpus ([#2762](https://github.com/Ikalus1988/MisakaNet/issues/2762)) ([5b757cb](https://github.com/Ikalus1988/MisakaNet/commit/5b757cb3807d39932add359c64ed9db3afcf2d85)) * **lessons:** voice pipelines and IM bots fail at someone else's layer ([#2630](https://github.com/Ikalus1988/MisakaNet/issues/2630)) ([#2689](https://github.com/Ikalus1988/MisakaNet/issues/2689)) ([34ffda9](https://github.com/Ikalus1988/MisakaNet/commit/34ffda935cf852512b1d25671badfa5e05cbabcd)) * **mcp:** improve Glama tool descriptions with non-obvious semantics ([#2441](https://github.com/Ikalus1988/MisakaNet/issues/2441)) ([e5f685d](https://github.com/Ikalus1988/MisakaNet/commit/e5f685da1380c1f05950ef8f1384bfa91c274f65)), closes [#1929](https://github.com/Ikalus1988/MisakaNet/issues/1929) * **readme:** list the plugin surfaces by the version that ships them ([#2644](https://github.com/Ikalus1988/MisakaNet/issues/2644)) ([708782c](https://github.com/Ikalus1988/MisakaNet/commit/708782c3877595fe9dea08876fb5de6d19d21991)), closes [#2640](https://github.com/Ikalus1988/MisakaNet/issues/2640) * **readme:** show what the 2.40.0 browser half actually looks like ([#2592](https://github.com/Ikalus1988/MisakaNet/issues/2592)) ([03618ba](https://github.com/Ikalus1988/MisakaNet/commit/03618ba7145b08736a79fe9eb5aaec88fce4b1eb)) * **readme:** Voice ships in 2.40.0, not 2.41.0 ([#2652](https://github.com/Ikalus1988/MisakaNet/issues/2652)) ([#2656](https://github.com/Ikalus1988/MisakaNet/issues/2656)) ([3501afa](https://github.com/Ikalus1988/MisakaNet/commit/3501afa9d3ecee1ec78c62f4f17136ec0ef17b32)) * **readme:** 用一张漫画说清「它能回答什么」——三语 README 同步 ([#2707](https://github.com/Ikalus1988/MisakaNet/issues/2707)) ([dafb8a9](https://github.com/Ikalus1988/MisakaNet/commit/dafb8a99845d705134f11135290ee6e949761220)) * **roadmap:** 2026-10-02 节的三条断言与代码对齐 ([#2655](https://github.com/Ikalus1988/MisakaNet/issues/2655)) ([19b4e23](https://github.com/Ikalus1988/MisakaNet/commit/19b4e23f57fa5eb64f89c17466708677819603c6)), closes [#2654](https://github.com/Ikalus1988/MisakaNet/issues/2654) * **roadmap:** a dated 2026-10-02 section, and KV→D1 in the priority list ([#2642](https://github.com/Ikalus1988/MisakaNet/issues/2642)) ([#2648](https://github.com/Ikalus1988/MisakaNet/issues/2648)) ([ab1c990](https://github.com/Ikalus1988/MisakaNet/commit/ab1c9903abfa36414237526475b4a4856a8fe482)) * **site:** drop the retired protocol name and the spend figure, lift Network activity, un-break the quickstart ([#2669](https://github.com/Ikalus1988/MisakaNet/issues/2669)) ([7d32f65](https://github.com/Ikalus1988/MisakaNet/commit/7d32f6519fe0f8cca38a759025c8ebe3e5d87062)) * **site:** the retired protocol name was still visible — in the Product Matrix card ([#2670](https://github.com/Ikalus1988/MisakaNet/issues/2670)) ([1f47637](https://github.com/Ikalus1988/MisakaNet/commit/1f476379b71dfa4a341b448d3c6e09482836907f)) * update benchmark section with aggregated data and trend ([#1914](https://github.com/Ikalus1988/MisakaNet/issues/1914)) ([#2442](https://github.com/Ikalus1988/MisakaNet/issues/2442)) ([b95f65b](https://github.com/Ikalus1988/MisakaNet/commit/b95f65be0fbe083b963cc5050545fbee8b4fb171)) * update deprecated version references in evaluation docs ([#2390](https://github.com/Ikalus1988/MisakaNet/issues/2390)) ([ff584e9](https://github.com/Ikalus1988/MisakaNet/commit/ff584e953593ec0fd19ae39d989ecd8480178dba)) ### Refactoring * **site:** retire the 111 id-alias stub pages; docs/_redirects is now the only publisher ([#2798](https://github.com/Ikalus1988/MisakaNet/issues/2798)) ([11576bd](https://github.com/Ikalus1988/MisakaNet/commit/11576bd9f95cfee4e5ba43cdebddda82358b600c)) ### Tests * **deploy:** drive commit_sha through a real helper instead of a source grep ([#2788](https://github.com/Ikalus1988/MisakaNet/issues/2788)) ([2ea3eaa](https://github.com/Ikalus1988/MisakaNet/commit/2ea3eaa274f11bb1b3b4dcc25bbe36ff0078ccbe)), closes [#2779](https://github.com/Ikalus1988/MisakaNet/issues/2779) * **dsh:** a behavioural e2e for the client half, in a real host and a real browser ([#2610](https://github.com/Ikalus1988/MisakaNet/issues/2610)) ([9b94c6a](https://github.com/Ikalus1988/MisakaNet/commit/9b94c6aef20429c27248636892ff699aeb55f171)) * **index:** 非 UTF-8 用例在装不下该名字的文件系统上跳过(修 [#2708](https://github.com/Ikalus1988/MisakaNet/issues/2708) 打红的 macOS leg) ([#2719](https://github.com/Ikalus1988/MisakaNet/issues/2719)) ([4fd063b](https://github.com/Ikalus1988/MisakaNet/commit/4fd063b48a4efad48d9719093b8daba170cd4dce)) * **search:** one CJK floor row's only answer is a draft lesson, and nothing recorded that on purpose ([#2770](https://github.com/Ikalus1988/MisakaNet/issues/2770)) ([b82e352](https://github.com/Ikalus1988/MisakaNet/commit/b82e352e4e2e8362b5058b34bf5c4c2374920aed)) * **search:** pin the Python retrieval ranking as a golden snapshot ([#2679](https://github.com/Ikalus1988/MisakaNet/issues/2679)) ([0a71f9e](https://github.com/Ikalus1988/MisakaNet/commit/0a71f9e6117047c33196268afbed185e2ece853d)), closes [#2678](https://github.com/Ikalus1988/MisakaNet/issues/2678) * **setup:** two installer tests were reading the developer proxy, not the installer ([#2756](https://github.com/Ikalus1988/MisakaNet/issues/2756)) ([0eb6d5d](https://github.com/Ikalus1988/MisakaNet/commit/0eb6d5de97a3787c70519f196ebf786dbc7b7ade)) * **smoke:** the probe asserts every seat, including the left column ([#2590](https://github.com/Ikalus1988/MisakaNet/issues/2590)) ([da651ef](https://github.com/Ikalus1988/MisakaNet/commit/da651ef70e37a2e0754fa92958f5832972ab8ab2)) ### CI/CD * a scheduled ratchet on the documented gate set ([#2723](https://github.com/Ikalus1988/MisakaNet/issues/2723)) ([1cc8873](https://github.com/Ikalus1988/MisakaNet/commit/1cc88735ac7311c2bb8176531579d54afff6f47e)) * **lesson:** a correct lesson that would have joined nothing ([#2729](https://github.com/Ikalus1988/MisakaNet/issues/2729)) ([d74262d](https://github.com/Ikalus1988/MisakaNet/commit/d74262ddd82fdb07b9140ad4d33ecb4d12413e8d)) * **security:** a dependency audit that only runs when a manifest changes never reports a new CVE ([#2742](https://github.com/Ikalus1988/MisakaNet/issues/2742)) ([4e204cf](https://github.com/Ikalus1988/MisakaNet/commit/4e204cf927cb893245a672a27eb27506418e582d)) * **security:** read .github/ and scripts/ in the worker secret gate ([#2733](https://github.com/Ikalus1988/MisakaNet/issues/2733)) ([fdf396c](https://github.com/Ikalus1988/MisakaNet/commit/fdf396c718f47fbf25472a6dca8237a2b9e3d3bc)), closes [#2684](https://github.com/Ikalus1988/MisakaNet/issues/2684) * **update-lessons:** land the three collided post-regeneration steps together ([#2781](https://github.com/Ikalus1988/MisakaNet/issues/2781)) ([3d9b8af](https://github.com/Ikalus1988/MisakaNet/commit/3d9b8afca64f77f0c9e1ca9c75c9441794bca20f)) * **workflows:** break the check_suite/check_run self-trigger loop that starves the runner queue ([#2698](https://github.com/Ikalus1988/MisakaNet/issues/2698)) ([0272dae](https://github.com/Ikalus1988/MisakaNet/commit/0272dae7b900f63204451723703e0e3d29e944e0)) ## [2.40.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.39.0...v2.40.0) (2026-10-01) ### Features * **activity:** serve today's activity behind a minutes TTL, and print the snapshot's age ([#2461](https://github.com/Ikalus1988/MisakaNet/issues/2461)) ([f0a4e7f](https://github.com/Ikalus1988/MisakaNet/commit/f0a4e7fec78f13adc4b5ee75274083022ca219d3)) * **api:** `GET /api/versions` — one place that says which number is which (intake [#2486](https://github.com/Ikalus1988/MisakaNet/issues/2486), D5) ([#2498](https://github.com/Ikalus1988/MisakaNet/issues/2498)) ([c7c8a28](https://github.com/Ikalus1988/MisakaNet/commit/c7c8a28f3d986bb31194c5de6b325aecf370de73)) * **badge:** publish the retrieval-backend split, and not the per-client counts ([#2450](https://github.com/Ikalus1988/MisakaNet/issues/2450)) ([f581309](https://github.com/Ikalus1988/MisakaNet/commit/f581309bdf38c81d201e1805cc34cf69706d026a)) * **bench:** measure the live service against the gate's floors, in one command ([#2420](https://github.com/Ikalus1988/MisakaNet/issues/2420)) ([b250831](https://github.com/Ikalus1988/MisakaNet/commit/b250831fe275661afeb8b485ce01aa6fb75ec212)) * **dsh:** a browser half for the plugin — visibility on the search, the reuse verdict where the outcome is ([#2551](https://github.com/Ikalus1988/MisakaNet/issues/2551)) ([5a86c37](https://github.com/Ikalus1988/MisakaNet/commit/5a86c37f19af3debe3ef621dcbd7b50cddd01587)) * **dsh:** a permanent seat in the left column, and the page it opens ([#2582](https://github.com/Ikalus1988/MisakaNet/issues/2582)) ([42d5992](https://github.com/Ikalus1988/MisakaNet/commit/42d59920f2dc242aab1898bc7719254a4b40d271)) * **dsh:** declare the two 0.1.x lines too, each measured the same way ([#2546](https://github.com/Ikalus1988/MisakaNet/issues/2546)) ([a998924](https://github.com/Ikalus1988/MisakaNet/commit/a998924c76a86b187699c0463e15e356d1539709)) * **dsh:** give the plugin a surface the host actually shows — icon, ecosystem metadata, a measured compatibility row ([#2543](https://github.com/Ikalus1988/MisakaNet/issues/2543)) ([369278e](https://github.com/Ikalus1988/MisakaNet/commit/369278e8a69b2edb406ccb80594a2a38f00f9ec7)) * **index:** /api/search-index reports the bigram channel, and the version the code expects ([#2418](https://github.com/Ikalus1988/MisakaNet/issues/2418)) ([16cf583](https://github.com/Ikalus1988/MisakaNet/commit/16cf583e1a95cf9b49f723a5956e6261747db3bd)) * **lessons:** land five bounty lessons cleanly — the answers were right, the 95 regenerated files were not ([#2401](https://github.com/Ikalus1988/MisakaNet/issues/2401)) ([7458d15](https://github.com/Ikalus1988/MisakaNet/commit/7458d152e3c01b0ae0f39266898b408205694124)), closes [#2282](https://github.com/Ikalus1988/MisakaNet/issues/2282) [#2281](https://github.com/Ikalus1988/MisakaNet/issues/2281) [#2280](https://github.com/Ikalus1988/MisakaNet/issues/2280) [#2171](https://github.com/Ikalus1988/MisakaNet/issues/2171) [#2260](https://github.com/Ikalus1988/MisakaNet/issues/2260) [#2264](https://github.com/Ikalus1988/MisakaNet/issues/2264) [#2266](https://github.com/Ikalus1988/MisakaNet/issues/2266) [#2254](https://github.com/Ikalus1988/MisakaNet/issues/2254) [#2257](https://github.com/Ikalus1988/MisakaNet/issues/2257) [#2263](https://github.com/Ikalus1988/MisakaNet/issues/2263) * **mcp:** serve misakanet_me_events locally and declare both install surfaces ([#2501](https://github.com/Ikalus1988/MisakaNet/issues/2501)) ([cb7a11a](https://github.com/Ikalus1988/MisakaNet/commit/cb7a11a88d10f584d16cc6c7d608b821f1089b82)) * **mcp:** the intake re-submit channel now carries a poll hint and a verified conversion receipt ([#2494](https://github.com/Ikalus1988/MisakaNet/issues/2494)) ([#2553](https://github.com/Ikalus1988/MisakaNet/issues/2553)) ([19c0247](https://github.com/Ikalus1988/MisakaNet/commit/19c024741dcea40c7ad83f68d3fdb28523ab5c95)) * **metrics:** a weekly onboarding snapshot — installs in, agent calls out ([#2531](https://github.com/Ikalus1988/MisakaNet/issues/2531)) ([e6bf83f](https://github.com/Ikalus1988/MisakaNet/commit/e6bf83f34a41e77cdcb6cd010b3e6a0e2698316c)) * **plugin:** a Claude Code channel — the fix for the installer's numbers is a channel, not a campaign ([#2530](https://github.com/Ikalus1988/MisakaNet/issues/2530)) ([65a2426](https://github.com/Ikalus1988/MisakaNet/commit/65a242699bd69ca0f91b7c116b3823218d112b7b)) * **search:** fuse the CJK channel into ranking with coverage-weighted RRF ([#2356](https://github.com/Ikalus1988/MisakaNet/issues/2356)) ([#2413](https://github.com/Ikalus1988/MisakaNet/issues/2413)) ([2432f4a](https://github.com/Ikalus1988/MisakaNet/commit/2432f4ac0fbc8cab25ed492d4d022af05d85ed49)) * **search:** index CJK text as bigrams in a channel of its own ([#2355](https://github.com/Ikalus1988/MisakaNet/issues/2355)) ([#2412](https://github.com/Ikalus1988/MisakaNet/issues/2412)) ([f7ae1e7](https://github.com/Ikalus1988/MisakaNet/commit/f7ae1e7bb5686209b47c52de0f68583471d9a19d)) * **search:** the committed query gets the Worker's ranking; typing stays local ([#2492](https://github.com/Ikalus1988/MisakaNet/issues/2492)) ([6bab8a1](https://github.com/Ikalus1988/MisakaNet/commit/6bab8a156ba4d2b90eac1c3d6a0715b301182bec)) * **smoke:** a dsh-client probe that boots a throwaway host, because that is where it broke ([#2571](https://github.com/Ikalus1988/MisakaNet/issues/2571)) ([729cbe1](https://github.com/Ikalus1988/MisakaNet/commit/729cbe1553e6472bfeed7c6a3d3c71120caee31d)) * **versions:** one version line — npm joins release-please, and publishing becomes unattended (D1=A) ([#2499](https://github.com/Ikalus1988/MisakaNet/issues/2499)) ([8f8b350](https://github.com/Ikalus1988/MisakaNet/commit/8f8b350ab8bbadf7c008d2d508756ed8b79307bd)) * **versions:** report the npm bundle line moving backwards, without gating on it ([#2449](https://github.com/Ikalus1988/MisakaNet/issues/2449)) ([2279fe3](https://github.com/Ikalus1988/MisakaNet/commit/2279fe3149ee5c993f2885d2e936b51059445d42)) ### Bug Fixes * **api:** `?q=` now answers a sentence instead of nothing — strict first, then any-term ([#2490](https://github.com/Ikalus1988/MisakaNet/issues/2490)) ([bfb6589](https://github.com/Ikalus1988/MisakaNet/commit/bfb65899a86e0f72805469c489fe2e4d556859f1)) * **bundle:** activation must not be able to abort a host's startup ([#2568](https://github.com/Ikalus1988/MisakaNet/issues/2568)) ([9276d2d](https://github.com/Ikalus1988/MisakaNet/commit/9276d2da8a1465847f934129fe32da28b9ee70a3)) * **ci:** bind the two copies of the corpus and gate their divergence ([#2459](https://github.com/Ikalus1988/MisakaNet/issues/2459)) ([60e019e](https://github.com/Ikalus1988/MisakaNet/commit/60e019e462bdd519e921dfcbdafdc6e6a6fb0c25)) * **ci:** the approval watch hears about a waiting run instead of asking a cron that drops it ([#2416](https://github.com/Ikalus1988/MisakaNet/issues/2416)) ([#2429](https://github.com/Ikalus1988/MisakaNet/issues/2429)) ([c000bf4](https://github.com/Ikalus1988/MisakaNet/commit/c000bf45c48dbdce5ec5a92804dff7444689b539)) * **ci:** the pr-genius bump works — the action moved to the repository root in v1.9.x ([#2409](https://github.com/Ikalus1988/MisakaNet/issues/2409)) ([6a71c0c](https://github.com/Ikalus1988/MisakaNet/commit/6a71c0c1c9f7c84377139a5c8519f9538e71563b)) * **ci:** three gates that could not see what they claimed ([#2451](https://github.com/Ikalus1988/MisakaNet/issues/2451)) ([ed68fd2](https://github.com/Ikalus1988/MisakaNet/commit/ed68fd21c95b512220173fd7d5b983708dd18235)) * **dsh:** the client half registered child slots before their parents declared them ([#2575](https://github.com/Ikalus1988/MisakaNet/issues/2575)) ([44835ee](https://github.com/Ikalus1988/MisakaNet/commit/44835ee42f249cec5700f61d58265d2041c765ca)) * **issues:** the acceptance-criteria half of the quality gate was decorative ([#2514](https://github.com/Ikalus1988/MisakaNet/issues/2514)) ([775ef69](https://github.com/Ikalus1988/MisakaNet/commit/775ef695f2fdb5caf86c1027eff5468c33193f9e)) * **lessons:** three published lessons were invisible — the indexer never looks at the root of `lessons/` ([#2406](https://github.com/Ikalus1988/MisakaNet/issues/2406)) ([8eb2ec7](https://github.com/Ikalus1988/MisakaNet/commit/8eb2ec7b57b1bfdbb251cb0b5bfff9c9449eaf9a)) * **mcp:** mark a non-published lesson in the default detail levels and in get_lesson ([#2270](https://github.com/Ikalus1988/MisakaNet/issues/2270)) ([#2423](https://github.com/Ikalus1988/MisakaNet/issues/2423)) ([a406a95](https://github.com/Ikalus1988/MisakaNet/commit/a406a9512c0f2cc3236e04e9fccddf1a73f599da)) * NameErrors in the embedding dev-fallback and the D1 sync script ([#2387](https://github.com/Ikalus1988/MisakaNet/issues/2387)) ([bcf2003](https://github.com/Ikalus1988/MisakaNet/commit/bcf200314ec1336c621ec103416d7c134f80a30b)) * **pages:** a merged lesson gets a page, and a page-less lesson is a gate ([#2460](https://github.com/Ikalus1988/MisakaNet/issues/2460)) ([963852b](https://github.com/Ikalus1988/MisakaNet/commit/963852b33df795fe085a234d1bef72c7c87bc322)) * **privacy:** the analytics endpoints published caller text and third-party tool names ([#2454](https://github.com/Ikalus1988/MisakaNet/issues/2454)) ([fa1a11a](https://github.com/Ikalus1988/MisakaNet/commit/fa1a11ac6bca52c48843e5f0175bf5616992d161)) * **scanners:** remove the dynamic execution the bench needed, anchor a URL assertion, and correct a wrong claim ([#2509](https://github.com/Ikalus1988/MisakaNet/issues/2509)) ([07a9782](https://github.com/Ikalus1988/MisakaNet/commit/07a97827ea504bea60c43370d3be8197ef4e2738)) * **search:** index the stored body, not four extracted sections ([#2444](https://github.com/Ikalus1988/MisakaNet/issues/2444)) ([babd06b](https://github.com/Ikalus1988/MisakaNet/commit/babd06b5ad70f6f1a108d77970395854851c6dd7)) * **search:** the body-indexing change needs its INDEX_TEXT_VERSION bump (4 → 5) ([#2447](https://github.com/Ikalus1988/MisakaNet/issues/2447)) ([5e2ddc8](https://github.com/Ikalus1988/MisakaNet/commit/5e2ddc8e923773ab7672c2fac771dc301e315c90)) * **search:** the relevance floor counts the words the user typed, not the alias table's guesses ([#2358](https://github.com/Ikalus1988/MisakaNet/issues/2358)) ([#2414](https://github.com/Ikalus1988/MisakaNet/issues/2414)) ([ea720aa](https://github.com/Ikalus1988/MisakaNet/commit/ea720aa3963d24d8d15a01f9a2bcb8ed6e536494)) * **site:** 73 of 426 lesson ids answered 404 — `/lessons//` now resolves ([#2453](https://github.com/Ikalus1988/MisakaNet/issues/2453)) ([2e0e6a3](https://github.com/Ikalus1988/MisakaNet/commit/2e0e6a3db3a473cbc0dc237f271b3c927f56a6f6)) * **site:** the generated redirect pages no longer embed an absolute URL (secret-scanner false positives) ([#2483](https://github.com/Ikalus1988/MisakaNet/issues/2483)) ([7cac799](https://github.com/Ikalus1988/MisakaNet/commit/7cac799107f60be38db6f06e7fbb0bb2483b2ed3)) * **site:** the homepage quoted the lesson count four times — now it references it ([#2455](https://github.com/Ikalus1988/MisakaNet/issues/2455)) ([d21a7fb](https://github.com/Ikalus1988/MisakaNet/commit/d21a7fb00324ba4a0ade3a240e2b15fc7fad15ca)) * **site:** the stats card rendered "—" for every counter — two regressions from the projection change ([#2515](https://github.com/Ikalus1988/MisakaNet/issues/2515)) ([805cd79](https://github.com/Ikalus1988/MisakaNet/commit/805cd793f0026aff020278b4404910fec5b1006b)) * **test:** CHANGELOG.md is a history record, not current copy ([#2539](https://github.com/Ikalus1988/MisakaNet/issues/2539)) ([9157d20](https://github.com/Ikalus1988/MisakaNet/commit/9157d20efe0239481ae9a5299adb216d70da0985)) * **test:** remove vacuous draft-status check from compact search ([#2270](https://github.com/Ikalus1988/MisakaNet/issues/2270)) ([a602ed8](https://github.com/Ikalus1988/MisakaNet/commit/a602ed8e751fb3b35fe202b1c186297df8d4278e)) * **tests:** hand node a file URL, not a Windows path (reds the 2.40.0 release) ([#2577](https://github.com/Ikalus1988/MisakaNet/issues/2577)) ([780d34c](https://github.com/Ikalus1988/MisakaNet/commit/780d34c7a13b689a789b82a9a3f54f97a7c3d08a)) * **test:** stop writing the repository corpus size into an assertion — it blocks the daily sync ([#2445](https://github.com/Ikalus1988/MisakaNet/issues/2445)) ([c7cc2ab](https://github.com/Ikalus1988/MisakaNet/commit/c7cc2abf07783f1901f30137a3aabc60c5a13617)) * **test:** the icon rule asked one path convention, and windows-latest went red on it ([#2545](https://github.com/Ikalus1988/MisakaNet/issues/2545)) ([fa9f6c8](https://github.com/Ikalus1988/MisakaNet/commit/fa9f6c82d28505dc431245b7ed392447d59c2b7c)) * **test:** the retired-slogan gate read the filesystem, not the repository ([#2547](https://github.com/Ikalus1988/MisakaNet/issues/2547)) ([45dee73](https://github.com/Ikalus1988/MisakaNet/commit/45dee7367a5975702b4f1c289df6534c43330da7)) * **watcher:** clean the lesson mirror without the pattern that blocks the store listing ([#2584](https://github.com/Ikalus1988/MisakaNet/issues/2584)) ([2e4922d](https://github.com/Ikalus1988/MisakaNet/commit/2e4922ddbe6e865b1d71bcb63d9c06d3f153261a)) ### Documentation * **agents:** correct my own diagnosis — and split the real trap from the crash ([#2569](https://github.com/Ikalus1988/MisakaNet/issues/2569)) ([5d408fd](https://github.com/Ikalus1988/MisakaNet/commit/5d408fd03e4448f71cec1483a235734e3949c282)) * **agents:** the profile trap I fell into — never change a profile from the CLI while the host runs ([#2557](https://github.com/Ikalus1988/MisakaNet/issues/2557)) ([5086ee2](https://github.com/Ikalus1988/MisakaNet/commit/5086ee27e55982a8bb59b8d9016ce9863f27aa3f)) * **ci:** the required-check set is four, and the docs disagreed with each other and with GitHub ([#2456](https://github.com/Ikalus1988/MisakaNet/issues/2456)) ([f4d48c8](https://github.com/Ikalus1988/MisakaNet/commit/f4d48c8c5e5a18a6278801f63bf07238e1f0e2bb)) * **contracts:** three published surfaces an agent reads first, each verified against the live service ([#2452](https://github.com/Ikalus1988/MisakaNet/issues/2452)) ([3729f32](https://github.com/Ikalus1988/MisakaNet/commit/3729f3270334803e7f53870f4ef3e36d084d77a4)) * **handoff:** 2026-09-30 — one version line closed, npm trusted publishing proven, three site regressions fixed ([#2532](https://github.com/Ikalus1988/MisakaNet/issues/2532)) ([b6a40fd](https://github.com/Ikalus1988/MisakaNet/commit/b6a40fd34a4dc7ef077781867bebca7ef8931cb4)) * **install:** answer intake [#2486](https://github.com/Ikalus1988/MisakaNet/issues/2486) — four install pitfalls, all four verified true ([#2493](https://github.com/Ikalus1988/MisakaNet/issues/2493)) ([ecdcc1b](https://github.com/Ikalus1988/MisakaNet/commit/ecdcc1b1e3311f2cb86f22c79b042610b61ef62c)) * **lessons:** instrumentation that never reached the artifact ([#2578](https://github.com/Ikalus1988/MisakaNet/issues/2578)) ([3c43913](https://github.com/Ikalus1988/MisakaNet/commit/3c439131969e6020fa345811678042d9e724472c)) * **maintainer:** record the two credential decisions — NPM_TOKEN's exit condition, and no token for the traffic leg ([#2548](https://github.com/Ikalus1988/MisakaNet/issues/2548)) ([d33ae7c](https://github.com/Ikalus1988/MisakaNet/commit/d33ae7ce879c546e3c3527aedb41290964aa384a)) * **ops:** the troubleshooting table did not mention the edge's Python-urllib UA rule ([#2419](https://github.com/Ikalus1988/MisakaNet/issues/2419)) ([4284fdd](https://github.com/Ikalus1988/MisakaNet/commit/4284fdd6ce8513392d5855722ffe9c68d3d54f5d)) * **readme:** add the GitHub Marketplace badge — the listing is real and the prose already claimed it ([#2512](https://github.com/Ikalus1988/MisakaNet/issues/2512)) ([134744f](https://github.com/Ikalus1988/MisakaNet/commit/134744fb1affef1efdfd152d1c5519e64073fa94)) * **readme:** show the DeepSeek Harness "Add plugin" dialog, three steps marked ([#2549](https://github.com/Ikalus1988/MisakaNet/issues/2549)) ([cfd4ff5](https://github.com/Ikalus1988/MisakaNet/commit/cfd4ff5d09499b065636a440e92435186e176b3c)) * **readme:** two rows of the 当前数据 table carried counts that nothing writes ([#2421](https://github.com/Ikalus1988/MisakaNet/issues/2421)) ([346b1f9](https://github.com/Ikalus1988/MisakaNet/commit/346b1f958ef3f0d349ef14734cac356f1e8d634e)) * retire the "zero-dependency" slogan — it read as "nothing to prepare" (intake [#2486](https://github.com/Ikalus1988/MisakaNet/issues/2486), D2) ([#2497](https://github.com/Ikalus1988/MisakaNet/issues/2497)) ([eed57f3](https://github.com/Ikalus1988/MisakaNet/commit/eed57f3f87aafdf485ab9d12a9dba4e52c1ba8ce)) * **reviews:** case study — a third-party install report, checked claim by claim ([#2519](https://github.com/Ikalus1988/MisakaNet/issues/2519)) ([dedb332](https://github.com/Ikalus1988/MisakaNet/commit/dedb3328ba5debdc45f88e370db282c9b774df2d)) * **reviews:** Rust rewrite feasibility — the measured case against it, and the one path worth trying ([#2502](https://github.com/Ikalus1988/MisakaNet/issues/2502)) ([5514f34](https://github.com/Ikalus1988/MisakaNet/commit/5514f3444681985d06637e701b36ba48742b424e)) * **search:** record the one-term-space precondition as met, and re-measure the calibration table ([#2415](https://github.com/Ikalus1988/MisakaNet/issues/2415)) ([a71ffef](https://github.com/Ikalus1988/MisakaNet/commit/a71ffef7db730926a55b52c363da0cdfad7e5cd7)) * **version:** two more files advertised a server version that nothing could update ([#2417](https://github.com/Ikalus1988/MisakaNet/issues/2417)) ([ba5853f](https://github.com/Ikalus1988/MisakaNet/commit/ba5853fbc642fc16fd9b5ecc736f44d2e9710e61)) ### Tests * **ci:** gate the two name-error classes that shipped on main today, in code no test drives ([#2405](https://github.com/Ikalus1988/MisakaNet/issues/2405)) ([c96161a](https://github.com/Ikalus1988/MisakaNet/commit/c96161a256b18fef01346db28e3c96e9ba5bc1f0)) * **docs:** a document may not send a reader to a lesson file that is not there ([#2408](https://github.com/Ikalus1988/MisakaNet/issues/2408)) ([ac84ef6](https://github.com/Ikalus1988/MisakaNet/commit/ac84ef63877d7155c73174e8e3b2f3d732fb57e3)) * **langchain:** measure the concurrency ratio up to three times instead of once ([#2424](https://github.com/Ikalus1988/MisakaNet/issues/2424)) ([#2430](https://github.com/Ikalus1988/MisakaNet/issues/2430)) ([89d5103](https://github.com/Ikalus1988/MisakaNet/commit/89d5103b0f56fced8016b5915bd74a773115328a)) * **site:** check every script for the temporal dead zone, not two entry-point strings ([#2516](https://github.com/Ikalus1988/MisakaNet/issues/2516)) ([056efee](https://github.com/Ikalus1988/MisakaNet/commit/056efee44103f3bc40e29930116814c8a4fdce0b)) ### CI/CD * **install:** make "install verified" a measured, dated fact (D3 = A) ([#2500](https://github.com/Ikalus1988/MisakaNet/issues/2500)) ([4bd3608](https://github.com/Ikalus1988/MisakaNet/commit/4bd3608d60da75d6d3cb4d603c0f11e836714e5b)) * **install:** probe the client installer daily — the path two thirds of contributors actually take ([#2529](https://github.com/Ikalus1988/MisakaNet/issues/2529)) ([747050e](https://github.com/Ikalus1988/MisakaNet/commit/747050e2c22e1fa6965d81a25f31a55386b1f48c)) * **release:** make the other two publishing workflows idempotent and manually triggerable ([#2518](https://github.com/Ikalus1988/MisakaNet/issues/2518)) ([8d727b3](https://github.com/Ikalus1988/MisakaNet/commit/8d727b31ba851fbb0284b48e99c6f17729602061)) * the worker suite now gates merges, through the required audit job ([#2457](https://github.com/Ikalus1988/MisakaNet/issues/2457)) ([12d7981](https://github.com/Ikalus1988/MisakaNet/commit/12d7981a1b4f420454c374981dd06f3be7cf87f2)) ## [2.39.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.38.0...v2.39.0) (2026-09-28) ### Features * **ci:** a run waiting for approval now says so, instead of waiting in silence ([#2385](https://github.com/Ikalus1988/MisakaNet/issues/2385)) ([2831662](https://github.com/Ikalus1988/MisakaNet/commit/28316625dc3de07fc5077a0406cad977488a80fe)) * **search:** record which implementation answered, so "which one do we delete" has data ([#2353](https://github.com/Ikalus1988/MisakaNet/issues/2353)) ([6f1dc5c](https://github.com/Ikalus1988/MisakaNet/commit/6f1dc5c54c2fb94deb18244c60859c3418656178)) * **search:** the CJK tokenizer CJK-1 needs, and the guard that it changes nothing for English ([#2361](https://github.com/Ikalus1988/MisakaNet/issues/2361)) ([1556b5a](https://github.com/Ikalus1988/MisakaNet/commit/1556b5afa59309ef4a48650393c940ce4a144c92)) ### Bug Fixes * **ci:** the link gate clamped `..` with forward slashes only, so windows-latest went red again ([#2398](https://github.com/Ikalus1988/MisakaNet/issues/2398)) ([14741ab](https://github.com/Ikalus1988/MisakaNet/commit/14741ab799fb5fbab6c624c13bd7add182727d79)) * **ci:** the nav sync returned Windows paths, so every windows-latest leg was red ([#2389](https://github.com/Ikalus1988/MisakaNet/issues/2389)) ([8b12f1b](https://github.com/Ikalus1988/MisakaNet/commit/8b12f1b156e5c47d485993e595499ec1a3d193f0)) * **ci:** update-badges broke on the node metric I retired — the red on main was mine ([#2347](https://github.com/Ikalus1988/MisakaNet/issues/2347)) ([c5fa045](https://github.com/Ikalus1988/MisakaNet/commit/c5fa04557846cbc512b26e5223ea8a59e3ff50fc)) * **site:** the hero sold registration as the way in, and the card sold a counter's date as freshness ([#2354](https://github.com/Ikalus1988/MisakaNet/issues/2354)) ([15eea30](https://github.com/Ikalus1988/MisakaNet/commit/15eea30d0f6dfb366c4fd37d632b7823787598b4)) ### Documentation * **state:** the snapshot said three required checks and an unsolved approval queue — both moved today ([#2360](https://github.com/Ikalus1988/MisakaNet/issues/2360)) ([3d6dbdb](https://github.com/Ikalus1988/MisakaNet/commit/3d6dbdbee4845afefea0c3d91f51693144fd6c79)) ### Refactoring * **site:** the drawer nav has one source, and a gate instead of a habit ([#2365](https://github.com/Ikalus1988/MisakaNet/issues/2365)) ([377dc02](https://github.com/Ikalus1988/MisakaNet/commit/377dc02fd0ace7188d3f98f232e86f3ee6062ff4)) ### Tests * **site:** every internal link in docs/ must resolve, and two pages were lying ([#2393](https://github.com/Ikalus1988/MisakaNet/issues/2393)) ([297a9c2](https://github.com/Ikalus1988/MisakaNet/commit/297a9c2a0128431230e9dd8c4494653bc3d0de46)) ## [2.38.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.37.0...v2.38.0) (2026-09-27) ### Features * **mcp:** the call record now says who is calling, not just how many calls ([#2338](https://github.com/Ikalus1988/MisakaNet/issues/2338)) ([c8f5a76](https://github.com/Ikalus1988/MisakaNet/commit/c8f5a76c5b1dd03041dffb88a8ad70d9537ac1ba)) ## [2.37.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.36.0...v2.37.0) (2026-09-27) ### Features * **ci:** the shape guard now decides the three shapes that cost the most review time ([#2332](https://github.com/Ikalus1988/MisakaNet/issues/2332)) ([28da790](https://github.com/Ikalus1988/MisakaNet/commit/28da79003504032fe7734080390ba8fde5e3d8e6)) * **lesson:** adopt the macOS Chrome headless PDF supervision lesson (from [#2299](https://github.com/Ikalus1988/MisakaNet/issues/2299)) ([#2316](https://github.com/Ikalus1988/MisakaNet/issues/2316)) ([1206022](https://github.com/Ikalus1988/MisakaNet/commit/1206022d510cf51cfb71d86369b4afbfff84287a)) * **site:** the "agent contributors" count is gone — it measured who wrote a header ([#2326](https://github.com/Ikalus1988/MisakaNet/issues/2326)) ([5fe38c8](https://github.com/Ikalus1988/MisakaNet/commit/5fe38c8af58a7d4c4cf800c1506f5e55b71d005b)) * **site:** the drawer links the pages that existed and nobody could reach ([#2328](https://github.com/Ikalus1988/MisakaNet/issues/2328)) ([68dff78](https://github.com/Ikalus1988/MisakaNet/commit/68dff789172a00df22ea45238676a6a3c2a2fc6d)) * **site:** the node count is not published anywhere — it was never a measurement of use ([#2313](https://github.com/Ikalus1988/MisakaNet/issues/2313)) ([5e71e30](https://github.com/Ikalus1988/MisakaNet/commit/5e71e30121c8ac2471f56491602ff515b5f78b0c)) ### Bug Fixes * **ci:** the new shape predicate flagged the release train — a claim is not a mention ([#2335](https://github.com/Ikalus1988/MisakaNet/issues/2335)) ([16a9cfd](https://github.com/Ikalus1988/MisakaNet/commit/16a9cfda4d61c434da9e6d10bcfd814ce70a037b)) * **gate:** an unreadable frontmatter block was reported as missing fields, and "no lesson" read as a pass ([#2317](https://github.com/Ikalus1988/MisakaNet/issues/2317)) ([c9ed3e6](https://github.com/Ikalus1988/MisakaNet/commit/c9ed3e69125eb770aa593420441bb770c6240f28)) * **search:** the index froze because it is one row under a hard cap, and the diagnosis lived inside that row ([#2327](https://github.com/Ikalus1988/MisakaNet/issues/2327)) ([c435c9f](https://github.com/Ikalus1988/MisakaNet/commit/c435c9fa5b0037501c92ca2c947cf0c77262282d)) * **tests:** the suite rewrote the published index, and a lesson-only PR paid for it ([#2312](https://github.com/Ikalus1988/MisakaNet/issues/2312)) ([dfbf8a9](https://github.com/Ikalus1988/MisakaNet/commit/dfbf8a95b7df896e00881f5e5851070787185ab0)) * **test:** the concurrency gate asserted an absolute 0.35s, so macOS runners failed it ([#2330](https://github.com/Ikalus1988/MisakaNet/issues/2330)) ([e0e719a](https://github.com/Ikalus1988/MisakaNet/commit/e0e719a73ed36a4b662c48d7d66b5b9b85801677)) ### Documentation * **bounty:** "the hosted search finds it" is our step, not the contributor's ([#2334](https://github.com/Ikalus1988/MisakaNet/issues/2334)) ([fbef877](https://github.com/Ikalus1988/MisakaNet/commit/fbef877cc8e411b1d6e8ea72bdc580ac0b12c2f2)) * **triage:** the weekly external-PR window, with the four verdicts and the trap CI cannot see ([#2333](https://github.com/Ikalus1988/MisakaNet/issues/2333)) ([3f447ce](https://github.com/Ikalus1988/MisakaNet/commit/3f447ced9164e3dbfbaf4dfb5ab2284358b6bf6a)) ## [2.36.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.35.0...v2.36.0) (2026-09-26) ### Features * **questions:** the answer step is delegated to the bounty machinery, not to a maintainer ([#2275](https://github.com/Ikalus1988/MisakaNet/issues/2275)) ([8ce336f](https://github.com/Ikalus1988/MisakaNet/commit/8ce336f613970d75d1df6f1edea428993c739802)) * **questions:** the middle of the question loop is now automated — triage, receipts, one digest ([#2273](https://github.com/Ikalus1988/MisakaNet/issues/2273)) ([945be7f](https://github.com/Ikalus1988/MisakaNet/commit/945be7f2906f04b91ba4877be5f1df6b4236210d)) ### Bug Fixes * **ci:** iteration 1 listed a fix it did not apply — the dispatch input was still interpolated into the shell ([#2234](https://github.com/Ikalus1988/MisakaNet/issues/2234)) ([436dc50](https://github.com/Ikalus1988/MisakaNet/commit/436dc50c09dafbeab8c843d9c89b4b40f073f7bc)) * **ci:** iteration 2 of the Open Code Review pass — dead state, a writer with no concurrency, unbounded jobs ([#2233](https://github.com/Ikalus1988/MisakaNet/issues/2233)) ([35d3116](https://github.com/Ikalus1988/MisakaNet/commit/35d3116ea7f0766259a921d5f4f9ed16f42b52ca)) * **ci:** the OCR review's four real findings — a dead token guard, an orphaned reader, a writer with no floor, a traceback in the watcher ([#2235](https://github.com/Ikalus1988/MisakaNet/issues/2235)) ([92f5f9c](https://github.com/Ikalus1988/MisakaNet/commit/92f5f9c42a7257824d8b6afd15e1030b86eb5579)) * **index:** the plain fields were never in the index, so the fallback path answered without them ([#2240](https://github.com/Ikalus1988/MisakaNet/issues/2240)) ([d6a1c72](https://github.com/Ikalus1988/MisakaNet/commit/d6a1c720d91b0b16e9a5dfb79a0aecf4eb9c4b56)) * **ops:** push_preflight called a legitimate bump a "revert", and never noticed a merged branch ([#2305](https://github.com/Ikalus1988/MisakaNet/issues/2305)) ([2f2e19f](https://github.com/Ikalus1988/MisakaNet/commit/2f2e19f5e52916c775c7c63709086d0fe060ab98)) * **ops:** the "diff every file against main before you push" ritual is now a command ([#2246](https://github.com/Ikalus1988/MisakaNet/issues/2246)) ([bce17b3](https://github.com/Ikalus1988/MisakaNet/commit/bce17b3d977e5dd111d3ad3d86b43afbc23d8fb3)) * **ops:** the preflight picked the GitHub token by substring — CodeQL alert [#285](https://github.com/Ikalus1988/MisakaNet/issues/285) ([#2252](https://github.com/Ikalus1988/MisakaNet/issues/2252)) ([8897b18](https://github.com/Ikalus1988/MisakaNet/commit/8897b188bd1aaa9c6baa3babca9b44dbd03f8ee0)) * **questions:** the receipt pointed at unrelated answers, and the digest collected `needs-ac` — plus the daily job now posts by default ([#2286](https://github.com/Ikalus1988/MisakaNet/issues/2286)) ([451b716](https://github.com/Ikalus1988/MisakaNet/commit/451b7163a849c2004ab021a6c9696f1beebd7101)) * **questions:** the stored answer carried its own routing marker, and agents were served it ([#2271](https://github.com/Ikalus1988/MisakaNet/issues/2271)) ([83cc825](https://github.com/Ikalus1988/MisakaNet/commit/83cc82595d126e514bbd8d9b76cebd443ea29f60)) * **search:** the note said production never syncs the index, and the shape gate sampled with the wrong tokenizer ([#2243](https://github.com/Ikalus1988/MisakaNet/issues/2243)) ([6ec737d](https://github.com/Ikalus1988/MisakaNet/commit/6ec737de82b59069379e995c2ba489de4239286e)) * **search:** the threshold that decides answered-vs-no_match rested on a measurement nobody could re-run ([#2249](https://github.com/Ikalus1988/MisakaNet/issues/2249)) ([2764e76](https://github.com/Ikalus1988/MisakaNet/commit/2764e767cfef955e0529b2977211f4191f8248b6)) * **security:** a PR-controlled branch name was interpolated into a shell command (Open Code Review pass) ([#2230](https://github.com/Ikalus1988/MisakaNet/issues/2230)) ([9075f9b](https://github.com/Ikalus1988/MisakaNet/commit/9075f9bb1c13b1185ddcca1e0407eed468b2aa93)) * **test:** the guard for the search scope read a field that level never returns — it could not fail ([#2306](https://github.com/Ikalus1988/MisakaNet/issues/2306)) ([b61d1ed](https://github.com/Ikalus1988/MisakaNet/commit/b61d1ed203c14c6e0f26c11863678ce608496904)) * **test:** the second over-strict assertion, found and patched by an external contributor first ([#2308](https://github.com/Ikalus1988/MisakaNet/issues/2308)) ([a796755](https://github.com/Ikalus1988/MisakaNet/commit/a796755683da23c4fe96bf066fbd8e6b5d5f3528)) * **worker:** a missing lesson answered "retry shortly", and any repository path was readable (B35) ([#2237](https://github.com/Ikalus1988/MisakaNet/issues/2237)) ([5a140e0](https://github.com/Ikalus1988/MisakaNet/commit/5a140e08b1525351fc8998daad1bdf45ae8fc9bd)) * **worker:** the guard refused a lesson that exists — the corpus has a Korean filename ([#2239](https://github.com/Ikalus1988/MisakaNet/issues/2239)) ([1e4e2ff](https://github.com/Ikalus1988/MisakaNet/commit/1e4e2ffab9f7ec32394608d004cc00a042b0f634)) ### Documentation * **enterprise:** the material a reviewer needs existed, but only as raw markdown behind one package README ([#2245](https://github.com/Ikalus1988/MisakaNet/issues/2245)) ([8855a86](https://github.com/Ikalus1988/MisakaNet/commit/8855a8699ce901f057df3acc49eca1ebea7fcc6b)) * **triage:** the SOP said "answer the maintainer answer in the issue" and never said how ([#2272](https://github.com/Ikalus1988/MisakaNet/issues/2272)) ([d1c9cea](https://github.com/Ikalus1988/MisakaNet/commit/d1c9cea81821a8e05d958d43daf2621dc45f09a1)) ### Tests * **index:** the staleness check I added yesterday reds a hand-written lesson PR for nothing ([#2244](https://github.com/Ikalus1988/MisakaNet/issues/2244)) ([d7e566d](https://github.com/Ikalus1988/MisakaNet/commit/d7e566dc0edf4cb0fbdf7831cf0d168cc386cf96)) * **search:** four measured designs for CJK recall, all of them regress the English floors ([#2251](https://github.com/Ikalus1988/MisakaNet/issues/2251)) ([2dd434a](https://github.com/Ikalus1988/MisakaNet/commit/2dd434ae9cfb41db0d2b01eab17188bec2dbe036)) * the suite was writing into the repository's own data files — the logs about the repo were 99% test traffic ([#2269](https://github.com/Ikalus1988/MisakaNet/issues/2269)) ([34b6847](https://github.com/Ikalus1988/MisakaNet/commit/34b68470beabd0bc873a2db9bc2231cac1fb07a8)) ## [2.35.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.34.0...v2.35.0) (2026-09-25) ### Features * **bounty:** the claim rule enforced, because prose did not enforce it ([#2043](https://github.com/Ikalus1988/MisakaNet/issues/2043)) ([#2052](https://github.com/Ikalus1988/MisakaNet/issues/2052)) ([a6a2e71](https://github.com/Ikalus1988/MisakaNet/commit/a6a2e71e54f9afae7573aac7be18c0567239964d)) * **ci:** the site health probe finally has a call site — and the CI page's counts were all wrong ([#2202](https://github.com/Ikalus1988/MisakaNet/issues/2202)) ([88558dd](https://github.com/Ikalus1988/MisakaNet/commit/88558dd57aa2592d7ec0d45fb9595dc4d3d1f09c)) * **doctor:** read the deployed version back, so a self-reported number has a live gate ([#1820](https://github.com/Ikalus1988/MisakaNet/issues/1820)) ([#2191](https://github.com/Ikalus1988/MisakaNet/issues/2191)) ([0ce31e5](https://github.com/Ikalus1988/MisakaNet/commit/0ce31e53336bc46fdb5476b23cf83b08cf7ca30a)) * **field-reports:** the evidence rules now have teeth ([#2042](https://github.com/Ikalus1988/MisakaNet/issues/2042)) ([#2051](https://github.com/Ikalus1988/MisakaNet/issues/2051)) ([65a5a40](https://github.com/Ikalus1988/MisakaNet/commit/65a5a40631bb4b4b62dbc4bdbb65d306ed31be36)) * **intake:** a case harness for the conversion receipt ([#1528](https://github.com/Ikalus1988/MisakaNet/issues/1528)) ([f76c23d](https://github.com/Ikalus1988/MisakaNet/commit/f76c23d210d6b4383c452cba6bcc7bccc3639bae)) * **intake:** case harness for the conversion receipt ([#1528](https://github.com/Ikalus1988/MisakaNet/issues/1528)) ([96e9c74](https://github.com/Ikalus1988/MisakaNet/commit/96e9c7441074171b07eb5e99793bd71745c130dd)) * **intake:** detect intakes whose work is already merged but whose issue is still open ([c1a3a08](https://github.com/Ikalus1988/MisakaNet/commit/c1a3a084ec84fd75e32614ef7ad04b857ec1a153)) * **intake:** detect intakes whose work is already merged but whose issue is still open ([fd1bbca](https://github.com/Ikalus1988/MisakaNet/commit/fd1bbcaf3a731850af781fa09e37705a1a7e104b)), closes [#2040](https://github.com/Ikalus1988/MisakaNet/issues/2040) * **lessons:** three intakes from the backlog, written from the corpus search ([#2021](https://github.com/Ikalus1988/MisakaNet/issues/2021)) ([3c2dd14](https://github.com/Ikalus1988/MisakaNet/commit/3c2dd14d4d3810ed79284acab2bf07eac053fd3a)), closes [#1130](https://github.com/Ikalus1988/MisakaNet/issues/1130) [#1145](https://github.com/Ikalus1988/MisakaNet/issues/1145) [#1146](https://github.com/Ikalus1988/MisakaNet/issues/1146) * **metrics:** finish roadmap milestone ② — hit/miss table with the topic split ([21edbe0](https://github.com/Ikalus1988/MisakaNet/commit/21edbe089910dda973bb781bd9b1dbc6f1869da3)) * **metrics:** finish roadmap milestone ② — the hit/miss table, with the topic split ([dbea063](https://github.com/Ikalus1988/MisakaNet/commit/dbea063601c4d9641b3cf548658204583c7c9691)) * **site:** the homepage's two rotten blocks — a frozen announcement and a registrations list nobody needed ([#2161](https://github.com/Ikalus1988/MisakaNet/issues/2161)) ([d99c166](https://github.com/Ikalus1988/MisakaNet/commit/d99c166b217e3c3e8fd5b0e7c6c0e915d5462b31)) * **tools:** compare the two search implementations over one query set ([#2121](https://github.com/Ikalus1988/MisakaNet/issues/2121)) ([6868b6b](https://github.com/Ikalus1988/MisakaNet/commit/6868b6b3941d5bd17253f3d212176eb84547c53e)) ### Bug Fixes * **bench:** the fixture whose job is to time out must not hang the runner ([2d90225](https://github.com/Ikalus1988/MisakaNet/commit/2d90225e8371b3b28c236b7cbc3475ee4f17f96a)) * **ci:** a docs-titled pull request carried the whole 2.35.0 version bump — landing now refuses a moved checkout ([#2218](https://github.com/Ikalus1988/MisakaNet/issues/2218)) ([bcb99d5](https://github.com/Ikalus1988/MisakaNet/commit/bcb99d570e101a494fd391968e20a30183794630)) * **ci:** actually run the done-but-open detector ([#2040](https://github.com/Ikalus1988/MisakaNet/issues/2040)) ([#2180](https://github.com/Ikalus1988/MisakaNet/issues/2180)) ([f6876f0](https://github.com/Ikalus1988/MisakaNet/commit/f6876f01ab3cc90a678a3e6a8a9bbe3dd8e8bbad)) * **ci:** every automated writer pushed its self-merging PR as the bot, so its checks were held ([#2216](https://github.com/Ikalus1988/MisakaNet/issues/2216)) ([9bf2163](https://github.com/Ikalus1988/MisakaNet/commit/9bf21630cf048e3925df6ea8cf39c059de34b000)), closes [#2189](https://github.com/Ikalus1988/MisakaNet/issues/2189) * **ci:** give the cross-platform legs failures that mean something ([#2018](https://github.com/Ikalus1988/MisakaNet/issues/2018)) ([5e82f93](https://github.com/Ikalus1988/MisakaNet/commit/5e82f9384694ad7a90b446085dde94de82a57984)) * **ci:** make the cross-platform legs fail for reasons that are real ([#2018](https://github.com/Ikalus1988/MisakaNet/issues/2018)) ([4c44dd7](https://github.com/Ikalus1988/MisakaNet/commit/4c44dd7be23deb6cbced79d1e31b9f1bf5c2896b)) * **ci:** my two new steps were un-portable to bash 3.2 and un-attributable to the PAT ([#2212](https://github.com/Ikalus1988/MisakaNet/issues/2212)) ([86db9a4](https://github.com/Ikalus1988/MisakaNet/commit/86db9a49b50e9a0b99e8825a1d60075b1ce2fc0b)) * **ci:** no gate read docs/, and a docs-only PR was one merge from publishing two tokens ([#1982](https://github.com/Ikalus1988/MisakaNet/issues/1982)) ([#2184](https://github.com/Ikalus1988/MisakaNet/issues/2184)) ([96c6bf5](https://github.com/Ikalus1988/MisakaNet/commit/96c6bf56d50d0867f8e1273198e7250459c41fce)) * **ci:** report the required DCO verdict as a commit status too, because a green check run was not enough ([#2211](https://github.com/Ikalus1988/MisakaNet/issues/2211)) ([006a851](https://github.com/Ikalus1988/MisakaNet/commit/006a851137c81d96b983f0d008890066e3b99ae5)), closes [#2189](https://github.com/Ikalus1988/MisakaNet/issues/2189) * **ci:** stop superseded matrix runs from holding runners ([bbc2f4c](https://github.com/Ikalus1988/MisakaNet/commit/bbc2f4cd28e72e401300b05ec69a19378c18a781)) * **ci:** the audit report was replaced by a file path, and the call that did it exited 0 ([#2206](https://github.com/Ikalus1988/MisakaNet/issues/2206)) ([d610c14](https://github.com/Ikalus1988/MisakaNet/commit/d610c14cc087a49163f534a4ea7e7b171ed5565a)), closes [#2189](https://github.com/Ikalus1988/MisakaNet/issues/2189) * **ci:** the auditor ran the whole suite on a Python it cannot import on ([#1822](https://github.com/Ikalus1988/MisakaNet/issues/1822)'s neighbourhood) ([#2183](https://github.com/Ikalus1988/MisakaNet/issues/2183)) ([e1a1cc7](https://github.com/Ikalus1988/MisakaNet/commit/e1a1cc7733d7dd10c2a0bb026647abcf3cec3c8c)) * **ci:** the automated writers land through a pull request that merges itself ([0b733d9](https://github.com/Ikalus1988/MisakaNet/commit/0b733d9649d83ad7f440c86b367ed9f34ee35005)) * **ci:** the claim window said 8 hours and released after 4, and [#1826](https://github.com/Ikalus1988/MisakaNet/issues/1826)'s list re-adjudicated ([#2192](https://github.com/Ikalus1988/MisakaNet/issues/2192)) ([a3525ed](https://github.com/Ikalus1988/MisakaNet/commit/a3525ed1fdedb46b5bee7f610a36d21824726253)) * **ci:** the D1 backup guard had no verdict at all on macOS ([#2201](https://github.com/Ikalus1988/MisakaNet/issues/2201)) ([c675619](https://github.com/Ikalus1988/MisakaNet/commit/c675619bf958cab792eea99451cffd6046afb203)) * **ci:** the DCO auto-fix pushed with the token whose pushes CI cannot run ([#2204](https://github.com/Ikalus1988/MisakaNet/issues/2204)) ([8fae5f3](https://github.com/Ikalus1988/MisakaNet/commit/8fae5f3b65a5086fed73deba799abbdac17e6164)) * **ci:** the release train was doubled by its own merge method — merge commits carry the PR title in the body ([#2177](https://github.com/Ikalus1988/MisakaNet/issues/2177)) ([c1a3a08](https://github.com/Ikalus1988/MisakaNet/commit/c1a3a084ec84fd75e32614ef7ad04b857ec1a153)) * **ci:** the three gates [#1822](https://github.com/Ikalus1988/MisakaNet/issues/1822) named — one was already fixed, two could not fail ([#1822](https://github.com/Ikalus1988/MisakaNet/issues/1822)) ([#2182](https://github.com/Ikalus1988/MisakaNet/issues/2182)) ([9c46ca2](https://github.com/Ikalus1988/MisakaNet/commit/9c46ca2468ceeeba9710af48f9f1c7829aa61b44)) * **d1:** the served trust field carries the level the corpus publishes ([#2080](https://github.com/Ikalus1988/MisakaNet/issues/2080)) ([9645010](https://github.com/Ikalus1988/MisakaNet/commit/9645010b70561fd772878ca6c957e427d86efdd2)) * **dco:** an unsigned commit is a failed gate, not a held run ([#2188](https://github.com/Ikalus1988/MisakaNet/issues/2188)) ([c955799](https://github.com/Ikalus1988/MisakaNet/commit/c955799dd72970dec8b0189f425d454d0e83a2a2)) * **installer:** macOS one-liner was broken, and the cross-platform legs need a time bound ([1b054a1](https://github.com/Ikalus1988/MisakaNet/commit/1b054a172fb00298a19b9a79f8f886180bc7488e)) * **installer:** the one-liner could not download without curl, and the fixture assumed master/main ([#2001](https://github.com/Ikalus1988/MisakaNet/issues/2001)) ([#2197](https://github.com/Ikalus1988/MisakaNet/issues/2197)) ([3505b1d](https://github.com/Ikalus1988/MisakaNet/commit/3505b1d35ab75e7225336fce65f159347adc6810)) * **installer:** the one-liner was broken on macOS, and the legs had no time bound ([5760487](https://github.com/Ikalus1988/MisakaNet/commit/576048707190f164fc60446c7bfca332eac03ba7)) * **intake:** a citation needs a shape, not just digits — three of four "done but open" intakes were artifacts ([a81bcd4](https://github.com/Ikalus1988/MisakaNet/commit/a81bcd401704d607c5d30982a1f395ccab01c859)) * **leaderboard:** a bot sat at rank [#2](https://github.com/Ikalus1988/MisakaNet/issues/2) on the public contributor board, and the snapshot could never correct itself ([#2194](https://github.com/Ikalus1988/MisakaNet/issues/2194)) ([1d9a9a6](https://github.com/Ikalus1988/MisakaNet/commit/1d9a9a6af1439d7da401e0ef39cc2a2dfa81b93e)) * **register:** the registration job stops writing a number it does not own ([463ba58](https://github.com/Ikalus1988/MisakaNet/commit/463ba58c8514996e3ded5c4adbd34cae30164043)) * **release:** the 2.35.0 release PR has been blocked for four days by 33 duplicated changelog entries ([#2207](https://github.com/Ikalus1988/MisakaNet/issues/2207)) ([8671c4e](https://github.com/Ikalus1988/MisakaNet/commit/8671c4e7085d7ffd8e078c01486e5bf1a47fe8ab)), closes [#2189](https://github.com/Ikalus1988/MisakaNet/issues/2189) * **release:** the changelog repair ran a copy, so its default path pointed outside the repository ([#2209](https://github.com/Ikalus1988/MisakaNet/issues/2209)) ([5339919](https://github.com/Ikalus1988/MisakaNet/commit/5339919d784878701d30508d03274b80b7b347c1)), closes [#2207](https://github.com/Ikalus1988/MisakaNet/issues/2207) * **release:** unsetting the header was not enough — the checkout's credentials file still won the push ([#2214](https://github.com/Ikalus1988/MisakaNet/issues/2214)) ([17a8e2e](https://github.com/Ikalus1988/MisakaNet/commit/17a8e2eca8377173d336c2ff853521e10259fbe7)), closes [#2189](https://github.com/Ikalus1988/MisakaNet/issues/2189) * **search:** the documented way to enable local search built a worse index than none ([#2185](https://github.com/Ikalus1988/MisakaNet/issues/2185)) ([#2187](https://github.com/Ikalus1988/MisakaNet/issues/2187)) ([b36806e](https://github.com/Ikalus1988/MisakaNet/commit/b36806ec2aa44fd91f8ca43b13a8b30860373379)) * **search:** the index must carry the bodies, and answers must carry the trust field ([51de5bd](https://github.com/Ikalus1988/MisakaNet/commit/51de5bd21653c0ba361d8f4d4c395d6dfd32c6bd)) * **search:** the OKF export inferred domain from a path separator, so Windows exported a different file ([#2215](https://github.com/Ikalus1988/MisakaNet/issues/2215)) ([0bfc97b](https://github.com/Ikalus1988/MisakaNet/commit/0bfc97bd80e0a68eb4eeb159733bd8a04e603748)) * **search:** the tracked OKF export had no writer, so the documented setup built a 47%-coverage index ([#2213](https://github.com/Ikalus1988/MisakaNet/issues/2213)) ([30fff79](https://github.com/Ikalus1988/MisakaNet/commit/30fff79d0fbf006ff9fd3bfa29fe79c9e9dcad18)), closes [#2185](https://github.com/Ikalus1988/MisakaNet/issues/2185) * **search:** the user's words decide the order, not the alias expansion ([#2079](https://github.com/Ikalus1988/MisakaNet/issues/2079)) ([c8030b3](https://github.com/Ikalus1988/MisakaNet/commit/c8030b3e7012684343876a1543e58cae1e703e78)) * **security:** the authenticated write path gets the two guards the anonymous one already had ([#2081](https://github.com/Ikalus1988/MisakaNet/issues/2081)) ([a44677f](https://github.com/Ikalus1988/MisakaNet/commit/a44677f70e35a0f758c8721d93a54bd80f58695c)) * **site:** /favicon.ico answered 404 on every page load — it is the site's own file now ([#2178](https://github.com/Ikalus1988/MisakaNet/issues/2178)) ([374fb47](https://github.com/Ikalus1988/MisakaNet/commit/374fb47d17389400605cdb17ec848b184717d5e3)) * **site:** count registrations as registrations, and take the client list from the installers ([ea2944c](https://github.com/Ikalus1988/MisakaNet/commit/ea2944cafb1ebbafd867038c3c7a6f5428dd209d)) * **site:** the contributor wall listed commit scopes as contributors — "worker", "ci", "cf", "data" ([#2195](https://github.com/Ikalus1988/MisakaNet/issues/2195)) ([021cd85](https://github.com/Ikalus1988/MisakaNet/commit/021cd851fc227435555e71dafdfd51100f253a99)) * **site:** the registration timeline fired up to 100 parallel requests per visit — the 504/401 source ([#2151](https://github.com/Ikalus1988/MisakaNet/issues/2151)) ([9759182](https://github.com/Ikalus1988/MisakaNet/commit/97591822ea93b2b76fe36459ceab6f3b6509865b)) * **tests:** my first child-env fix was wrong — the environment has to be inherited, not rebuilt ([#2199](https://github.com/Ikalus1988/MisakaNet/issues/2199)) ([e861060](https://github.com/Ikalus1988/MisakaNet/commit/e861060030e250572dfd74003667431f5f309ae0)) * **tests:** the last two windows failures were my own test assuming the runner's environment ([#2200](https://github.com/Ikalus1988/MisakaNet/issues/2200)) ([e2fbaab](https://github.com/Ikalus1988/MisakaNet/commit/e2fbaabd120eee1d523f113f6411a0d787d00860)) * **tests:** the last windows failure was my own assertion reading SystemRoot in the wrong case ([#2205](https://github.com/Ikalus1988/MisakaNet/issues/2205)) ([2041841](https://github.com/Ikalus1988/MisakaNet/commit/20418413ebe3ad3820c17d3eab5a42f73b933eb0)) * **tests:** the windows legs were red on every PR because a child PATH cannot load Winsock ([#2198](https://github.com/Ikalus1988/MisakaNet/issues/2198)) ([a24e7ef](https://github.com/Ikalus1988/MisakaNet/commit/a24e7efc4cd4909d80808128997e5d7587d854dc)) * **tombstone:** a non-object JSON payload raised AttributeError instead of ValueError ([#1845](https://github.com/Ikalus1988/MisakaNet/issues/1845)) ([6a6e1f8](https://github.com/Ikalus1988/MisakaNet/commit/6a6e1f8d3e344a77362fb315774435b1ebed9693)) * **tooling:** the lesson writer created unreadable lessons, and the freshness parser could not read them ([8d74771](https://github.com/Ikalus1988/MisakaNet/commit/8d7477198f51e4775b96e8d8eecd07b62bea9717)) * **tooling:** the lesson writer created unreadable lessons, and the freshness parser could not read them ([9d14553](https://github.com/Ikalus1988/MisakaNet/commit/9d145538701f9535379cd50b60aa1ff79773d301)), closes [#1922](https://github.com/Ikalus1988/MisakaNet/issues/1922) [#1775](https://github.com/Ikalus1988/MisakaNet/issues/1775) * **windows:** the 16 failures, and the three product bugs behind them ([f1c6f5f](https://github.com/Ikalus1988/MisakaNet/commit/f1c6f5fa93c05410f6aba497c5c147c5db01345d)) * **worker:** a truncated lesson said it was the whole lesson, and the plain fields never reached the D1 path ([#2138](https://github.com/Ikalus1988/MisakaNet/issues/2138)) ([#2142](https://github.com/Ikalus1988/MisakaNet/issues/2142)) ([1d4a3a1](https://github.com/Ikalus1988/MisakaNet/commit/1d4a3a1213cb7300938235628ace38858f3f8447)) * **worker:** analytics stop spending the KV write budget ([#1890](https://github.com/Ikalus1988/MisakaNet/issues/1890)) ([41d4268](https://github.com/Ikalus1988/MisakaNet/commit/41d42685e37f9e059ee956842a1f054473cd20c6)) * **worker:** every outbound call gets a deadline — the 504s are the worker waiting on a stalled fetch ([3f57279](https://github.com/Ikalus1988/MisakaNet/commit/3f572791504a53d9b10b4ad4e6966911540d7440)) * **worker:** the counter's last resort read a branch that no longer has the file ([#1820](https://github.com/Ikalus1988/MisakaNet/issues/1820)) ([#2190](https://github.com/Ikalus1988/MisakaNet/issues/2190)) ([0646e2d](https://github.com/Ikalus1988/MisakaNet/commit/0646e2d3ce3df8f5b67d99f96be650e9196b695e)) * **worker:** the identity badge asked for a key nothing has ever written ([#2156](https://github.com/Ikalus1988/MisakaNet/issues/2156)) ([10bf35a](https://github.com/Ikalus1988/MisakaNet/commit/10bf35a132f7bc7b0e5d8bbc9ce6981a6c354fac)) * **worker:** the keepalive was the zone's entire 522 signal — it now checks itself in-process ([#2126](https://github.com/Ikalus1988/MisakaNet/issues/2126)) ([#2148](https://github.com/Ikalus1988/MisakaNet/issues/2148)) ([3f8607d](https://github.com/Ikalus1988/MisakaNet/commit/3f8607ddb49f9de1b632355b2a2334012e7b3a9c)) * **worker:** the monthly traffic total becomes a counters row — the key had no reader ([#2120](https://github.com/Ikalus1988/MisakaNet/issues/2120)) ([1362444](https://github.com/Ikalus1988/MisakaNet/commit/1362444f81049a5d60b94f21332eb1218a822cca)) * **worker:** the per-address rate limits leave KV, and the store gets a reclaimer ([#2117](https://github.com/Ikalus1988/MisakaNet/issues/2117)) ([7e72d31](https://github.com/Ikalus1988/MisakaNet/commit/7e72d313fb7b064373dde02e8b2a4933e74714da)) * **worker:** the per-event records and the traffic roll-up move to the durable store ([#2118](https://github.com/Ikalus1988/MisakaNet/issues/2118), [#2120](https://github.com/Ikalus1988/MisakaNet/issues/2120)) ([d91871f](https://github.com/Ikalus1988/MisakaNet/commit/d91871f62dee03f337dfc19a13dda53d36cee6d2)) * **worker:** the ranking's probe moves to the seam, and the keepalive counter to the store ([d95d2bf](https://github.com/Ikalus1988/MisakaNet/commit/d95d2bff926ad24a8ff16b2f6d59ec4c13f06aee)) * **worker:** the search index and the upstream caches move to the durable store ([#2116](https://github.com/Ikalus1988/MisakaNet/issues/2116)) ([5ca564d](https://github.com/Ikalus1988/MisakaNet/commit/5ca564d571a554b889e1acc75477d4077654d287)) * **worker:** the trust field was dropped on the last hop — the row had it, the projection did not ([3674ab5](https://github.com/Ikalus1988/MisakaNet/commit/3674ab574484249cecd5281d3dafdf20dfbdbcf5)) * **worker:** the unsolved map moves to the durable store — and the last KV enumeration moves with it ([57bdcc9](https://github.com/Ikalus1988/MisakaNet/commit/57bdcc992a53f7b95b307cf2a2c15c3f96828e75)) * **worker:** the unsolved map moves to the durable store — and the last KV enumeration with it ([#2119](https://github.com/Ikalus1988/MisakaNet/issues/2119)) ([fb5487f](https://github.com/Ikalus1988/MisakaNet/commit/fb5487f6152319aea589bbdbdccc6b94e1a4493e)) ### Documentation * add Google Antigravity MCP integration recipe and field report ([#1948](https://github.com/Ikalus1988/MisakaNet/issues/1948)) ([89b7ef3](https://github.com/Ikalus1988/MisakaNet/commit/89b7ef37e01ea0e4376c511b428b809f4833362c)) * **arch:** the map still pointed at a script that was deleted four days ago ([#2082](https://github.com/Ikalus1988/MisakaNet/issues/2082)) ([#2181](https://github.com/Ikalus1988/MisakaNet/issues/2181)) ([f6acd6d](https://github.com/Ikalus1988/MisakaNet/commit/f6acd6dde53a69b6d929bbb7564491e1927d40e5)) * automated writers land through a pull request that merges itself ([#2104](https://github.com/Ikalus1988/MisakaNet/issues/2104)) ([faec191](https://github.com/Ikalus1988/MisakaNet/commit/faec191209277db59822b3abe34c15722941fd2f)) * **benchmark:** LessonReuseBench cannot run and never has — three public pages said otherwise ([#2223](https://github.com/Ikalus1988/MisakaNet/issues/2223)) ([d1431db](https://github.com/Ikalus1988/MisakaNet/commit/d1431dbe13f4c2c484010dbe55277e76395da10f)) * **benchmark:** the README's headline number measures recitation, not retrieval — say so, and pin it ([#2219](https://github.com/Ikalus1988/MisakaNet/issues/2219)) ([e9427ee](https://github.com/Ikalus1988/MisakaNet/commit/e9427eeb3297f125dcda06b1556db8abd940e84b)) * **ci:** the diagnostics workflow is in the inventory — the gate that caught it ([9e22a3d](https://github.com/Ikalus1988/MisakaNet/commit/9e22a3d5da7f56234845aafdd5cc8a63616af33b)) * **ci:** the register.yml exception names the issue that carries its evidence ([#2106](https://github.com/Ikalus1988/MisakaNet/issues/2106)) ([bf47d21](https://github.com/Ikalus1988/MisakaNet/commit/bf47d2147d77b98f8c285d876bfad09bc6501fdf)) * **contributing:** say which Python the *suite* needs, and point at the derivation instead of a number ([#2217](https://github.com/Ikalus1988/MisakaNet/issues/2217)) ([63a2d3a](https://github.com/Ikalus1988/MisakaNet/commit/63a2d3afeaf6d7671d1e7a8e0afc5a6065ffd592)) * **credentials:** 9109 means the token value changed, not that a permission is missing ([8c1f3d1](https://github.com/Ikalus1988/MisakaNet/commit/8c1f3d1a9f120bfe9f35a5908456cb27b7b778f4)) * **credentials:** the npm publish token expires 2026-11-30, and npm will keep expiring it ([30ed47e](https://github.com/Ikalus1988/MisakaNet/commit/30ed47e8ef75b4e2411458e31c02195b27cf3dee)) * **credentials:** what the site's build token needs, exactly (§4.5.1) ([#2163](https://github.com/Ikalus1988/MisakaNet/issues/2163)) ([f9743ca](https://github.com/Ikalus1988/MisakaNet/commit/f9743ca7151fede9731167754fd7bda2c8f908ba)) * **cursor:** the setup steps that did not work, and the ones that did ([#2087](https://github.com/Ikalus1988/MisakaNet/issues/2087)) ([6550fef](https://github.com/Ikalus1988/MisakaNet/commit/6550fef0c0ea0aaa4aa4fe99b1dbfed811fd771a)) * **enterprise:** the anonymity path no longer has a 5-reads-a-day cap ([844c5d6](https://github.com/Ikalus1988/MisakaNet/commit/844c5d67864b2ebbbb2c27cfd1cad28c43bebd77)) * fix 23 broken relative links and expand link gate to all docs ([#1946](https://github.com/Ikalus1988/MisakaNet/issues/1946)) ([97ab2a0](https://github.com/Ikalus1988/MisakaNet/commit/97ab2a045c2239ca14024ebb2050cb86afb4f362)) * **install:** the landing page advertised the removed read cap too ([d883363](https://github.com/Ikalus1988/MisakaNet/commit/d883363dcece3176b41bb96e244018f4775c651a)) * **intake:** make reproducible evidence a condition, not a request ([eb6519a](https://github.com/Ikalus1988/MisakaNet/commit/eb6519aa4acfacb0834b1a2bde072a6476b06889)) * **intake:** make reproducible evidence a condition, not a request ([7c59c04](https://github.com/Ikalus1988/MisakaNet/commit/7c59c041c35140c5c271a9d905691ac04a622f67)), closes [#2041](https://github.com/Ikalus1988/MisakaNet/issues/2041) * **integrations:** the reader-facing FAQ still promised a 5-reads-a-day cap ([3e3c03c](https://github.com/Ikalus1988/MisakaNet/commit/3e3c03cd567dfdab6e7a0d44f697cbdc044ad5c9)) * **maintainer:** a publishable state-of-the-repo ([#2044](https://github.com/Ikalus1988/MisakaNet/issues/2044)) ([79a04d0](https://github.com/Ikalus1988/MisakaNet/commit/79a04d096ce87fac4e2942be888a4b2667208249)) * **maintainer:** correct the two facts this document got wrong, and record the round ([11f283d](https://github.com/Ikalus1988/MisakaNet/commit/11f283d46fc19da104178b8586c23e3ed92672a4)) * **maintainer:** record this session in the state document, including what I got wrong ([959a293](https://github.com/Ikalus1988/MisakaNet/commit/959a2939d89acb316a63587e4839afe29aa359bd)) * **maintainer:** the reproduce script no longer looks like a hardcoded secret ([dfa4152](https://github.com/Ikalus1988/MisakaNet/commit/dfa4152df405c1144713c1c0e96d85dedd8a7dce)) * **mcp:** the page never said which of the three surfaces it describes — the resources were never missing ([#2179](https://github.com/Ikalus1988/MisakaNet/issues/2179)) ([b6441c5](https://github.com/Ikalus1988/MisakaNet/commit/b6441c52f4254365f3955cad0ce72adf7bbb1fb6)) * **readme:** the demand board says "nothing is missing" — say what it actually measures ([#2225](https://github.com/Ikalus1988/MisakaNet/issues/2225)) ([7114543](https://github.com/Ikalus1988/MisakaNet/commit/7114543451591f194414492f54faaf6788d6bea9)), closes [#2224](https://github.com/Ikalus1988/MisakaNet/issues/2224) * **roadmap:** give the current numbers a writer, and say who owns the STATUS generator ([#2095](https://github.com/Ikalus1988/MisakaNet/issues/2095)) ([b65f377](https://github.com/Ikalus1988/MisakaNet/commit/b65f377d1e0b0aa962e71f67af8a9f0b1b49677b)) * **roadmap:** milestone ② is live, not just locally green ([a39ba25](https://github.com/Ikalus1988/MisakaNet/commit/a39ba25d687267f3c0cfea1173f0e9e245e36f76)) * **security:** `client_id` is a key, so say so — and stop recommending a value that is public ([#2083](https://github.com/Ikalus1988/MisakaNet/issues/2083)) ([beb50a2](https://github.com/Ikalus1988/MisakaNet/commit/beb50a2289ad758a708f622624dc462dc913b164)) * **site:** registration copy stops selling registration as the way in ([#2057](https://github.com/Ikalus1988/MisakaNet/issues/2057)) ([5b82860](https://github.com/Ikalus1988/MisakaNet/commit/5b82860518317c727c037c9fe321f1a48d91f8d7)) * six claims the code does not make — client_id as a key, the removed read quota, and unnamed "cases" ([#2144](https://github.com/Ikalus1988/MisakaNet/issues/2144)) ([bc10eb0](https://github.com/Ikalus1988/MisakaNet/commit/bc10eb0e81449aa553c8ad7eb81906bfe990f7c1)) * **skill:** the skill taught a hosted-only tool without saying which surface ([#2000](https://github.com/Ikalus1988/MisakaNet/issues/2000)) ([#2193](https://github.com/Ikalus1988/MisakaNet/issues/2193)) ([1b100d8](https://github.com/Ikalus1988/MisakaNet/commit/1b100d8be86e837f965322ce457a642869097adf)) * **state:** the ruleset's push rule, the two runs it killed, and the writers that moved to the self-merging PR ([0a0149a](https://github.com/Ikalus1988/MisakaNet/commit/0a0149a652dac24cc884ed37a390e99dee0f0b0d)) * sweep the removed read cap out of the three surfaces that still promised it ([150f3da](https://github.com/Ikalus1988/MisakaNet/commit/150f3da194df7d6e879800768a9c7911017bca32)) * the land mechanism was proven live, twice ([#2105](https://github.com/Ikalus1988/MisakaNet/issues/2105)) ([e6110fe](https://github.com/Ikalus1988/MisakaNet/commit/e6110fe6c4a492a851dde65e7e8ca2e9d7a27f4b)) ### Refactoring * **ci:** drop the lander's unused dry-run and check knobs ([1edd043](https://github.com/Ikalus1988/MisakaNet/commit/1edd043653ea24fb926ce5dbb19aa8e04b30913f)) ### Tests * **ci:** the converted workflows' lander calls are checked against the lander's own validators ([5e6404e](https://github.com/Ikalus1988/MisakaNet/commit/5e6404e1bf19d21e28aeb028f480cde8d7dd54e8)) * CodeQL alert [#281](https://github.com/Ikalus1988/MisakaNet/issues/281) moved to the next regex, so the pattern is gone from all four files ([#2153](https://github.com/Ikalus1988/MisakaNet/issues/2153)) ([0db5226](https://github.com/Ikalus1988/MisakaNet/commit/0db522653bf12d21f9f2e04bd40d65f8e42006d9)) * **counters:** the guard [#2117](https://github.com/Ikalus1988/MisakaNet/issues/2117) asked for in place of an unmeasurable latency comparison ([#2155](https://github.com/Ikalus1988/MisakaNet/issues/2155)) ([1f79e86](https://github.com/Ikalus1988/MisakaNet/commit/1f79e86f1f91c22b7818f0a14b7425d8b91ae4bb)) * **gates:** the row-id gate scans tracked files, not the filesystem ([#2057](https://github.com/Ikalus1988/MisakaNet/issues/2057) review finding) ([70fcb51](https://github.com/Ikalus1988/MisakaNet/commit/70fcb51036ca77d95a80b84ee4868b6d4a37de02)) * **intake:** the [#1130](https://github.com/Ikalus1988/MisakaNet/issues/1130) receipt case, now that its lesson is on main ([3d339f9](https://github.com/Ikalus1988/MisakaNet/commit/3d339f99b27f810c390f929d77dbb992ef0577cc)) * **scanner:** the alert was right and the local guard could not see it — it now scans tests/ ([#2175](https://github.com/Ikalus1988/MisakaNet/issues/2175)) ([fb5c10d](https://github.com/Ikalus1988/MisakaNet/commit/fb5c10d6e6122b7329ef439342e2037f252bd6a4)) ### CI/CD * **dco:** no external PR could ever satisfy the ruleset — the required check was never reported ([#2174](https://github.com/Ikalus1988/MisakaNet/issues/2174)) ([ace5e61](https://github.com/Ikalus1988/MisakaNet/commit/ace5e6143496cf2a0a89e0c3ff454b9c15dd2f0b)) * **dco:** the untrusted-checkout alert was right — read the commits through the API, not from a checkout ([#2176](https://github.com/Ikalus1988/MisakaNet/issues/2176)) ([e54422f](https://github.com/Ikalus1988/MisakaNet/commit/e54422f29b19cb6bb6b6bc6d983e3376fbd2c6c9)) * **gates:** a weekly audit that proves the key gates can still fail ([#2045](https://github.com/Ikalus1988/MisakaNet/issues/2045)) ([#2054](https://github.com/Ikalus1988/MisakaNet/issues/2054)) ([f1ac783](https://github.com/Ikalus1988/MisakaNet/commit/f1ac783ff01068be1f5994d02d1e8033ae1bb030)) * **gate:** the lesson gate now always reports, so it can be a required check ([#2039](https://github.com/Ikalus1988/MisakaNet/issues/2039)) ([95bd6d8](https://github.com/Ikalus1988/MisakaNet/commit/95bd6d84352c93855a964fc09d8beeff5791887b)), closes [#1920](https://github.com/Ikalus1988/MisakaNet/issues/1920) * make the red mean something — a flaky leg with headroom, and an action alias that follows versions ([1e1de1d](https://github.com/Ikalus1988/MisakaNet/commit/1e1de1d7e61cb1df52c3a1df0b8edca6f2aaaee2)) * **publish:** the version record goes through a PR, because main refuses direct pushes ([787d52b](https://github.com/Ikalus1988/MisakaNet/commit/787d52b73d2084b065f175ede4cd0927b0df2081)) ## [2.34.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.33.0...v2.34.0) (2026-09-21) ### Features * **referral:** record the invitation on the server, not in one machine's git history ([c345f9d](https://github.com/Ikalus1988/MisakaNet/commit/c345f9d970b0bd04dd00bc0e5ae535089534d7b1)) * **referral:** 把邀请记在服务端,而不是某台机器的 git 历史里 ([ba4e652](https://github.com/Ikalus1988/MisakaNet/commit/ba4e652f3d4667e1d8b5c9aae8fcebe201f16cde)) ### Bug Fixes * **ci:** a Worker deploy supersedes the one still waiting for approval, instead of queueing beside it ([27c526f](https://github.com/Ikalus1988/MisakaNet/commit/27c526f1da382fb2aeca8fdb3872444b757b7277)) * **ci:** capture the exit code before `-e` can abort the step that measures it ([29df1aa](https://github.com/Ikalus1988/MisakaNet/commit/29df1aaac74c6dc613a380c07299a493b64169c9)) * **ci:** give the Windows legs a UTF-8 environment, which is what their 77 failures were about ([c5695ec](https://github.com/Ikalus1988/MisakaNet/commit/c5695ec697cbd1aef505244363c3bfe4a75fe6e0)) * **ci:** the cross-platform matrix ran zero tests on eight legs and reported ✅ ([0d3209c](https://github.com/Ikalus1988/MisakaNet/commit/0d3209c61c093085a202efb290483098216a8f0f)) * **ci:** Worker 部署取代「还在等审批」的那一条,而不是排在它旁边 ([9727799](https://github.com/Ikalus1988/MisakaNet/commit/9727799600de5f8ec02fc1a370ae1df05df9ffc1)) * **ci:** 恢复 [#1964](https://github.com/Ikalus1988/MisakaNet/issues/1964) 的两个修复(它被关闭但未合并)—— 跳过的测试不再被说成失败的测试 ([#2004](https://github.com/Ikalus1988/MisakaNet/issues/2004)) ([89b1d6a](https://github.com/Ikalus1988/MisakaNet/commit/89b1d6a95d3c3de6e03384ad9fcd551570a9b9ad)) * **ci:** 给 Windows 腿一个 UTF-8 环境(它 77 条失败主要就是这件事) ([0f3384e](https://github.com/Ikalus1988/MisakaNet/commit/0f3384eed11a18054037e8c7e90af112158dbb53)) * **ci:** 跨平台矩阵在 8 条腿上跑了零条测试却报 ✅ ([5dcb673](https://github.com/Ikalus1988/MisakaNet/commit/5dcb673443f0b769a34c90f6f3826696b524bb42)) ## [2.33.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.32.1...v2.33.0) (2026-09-21) ### Features * **action:** publish the intake bot from a repository-root action.yml ([8eb23ac](https://github.com/Ikalus1988/MisakaNet/commit/8eb23ac4f4cf9ca418068926dc567ce7d16c1cf8)) * **action:** 把 intake bot 迁到仓库根以便上架 Marketplace(并修掉 v1 tag 的两处碰撞) ([4f7b99b](https://github.com/Ikalus1988/MisakaNet/commit/4f7b99b32e035142f3463992293fc4d5effc4712)) * **setup:** add Cursor as a sixth target (and stop two checks from lying) ([fd9739f](https://github.com/Ikalus1988/MisakaNet/commit/fd9739fcb703959594c4ba2dea08a6492bcf9c11)) * **setup:** installer targets 6 → 10, table-driven, one vendor shape each ([060a2ad](https://github.com/Ikalus1988/MisakaNet/commit/060a2ade39c9253fa5478637e7e6cd3a32b0abc0)) * **setup:** 安装器加入第 6 个目标 Cursor(并修掉两处在说谎的检查) ([845eb60](https://github.com/Ikalus1988/MisakaNet/commit/845eb60ffdf237c942d891e14951d854cc60a24a)) * **setup:** 安装器目标 6 → 10(Gemini CLI / Copilot CLI / OpenCode / Kiro),表驱动 + 形状门禁 ([3505b8e](https://github.com/Ikalus1988/MisakaNet/commit/3505b8e7d5d2fa69f3550aafa5d4fa7943b82384)) ### Bug Fixes * **bootstrap:** the second installer was a release behind — no context hints, retired quota ([5f4eb19](https://github.com/Ikalus1988/MisakaNet/commit/5f4eb19f1cab9f9ef56d1049c9c7b8930bd00707)) * **bootstrap:** 第二个安装器落后一版 —— 一个上下文头都不写,且还在宣传已取消的读配额 ([8417494](https://github.com/Ikalus1988/MisakaNet/commit/8417494c4cf70b1c67297922d5a2d6f68e2d1be6)) * **ci:** a fork PR is not an audit failure ([3bd3ff0](https://github.com/Ikalus1988/MisakaNet/commit/3bd3ff03f1ceafe6e0bf506ed661d8941e22c066)) * **ci:** a path nobody can trigger is not a tested path, and the inventory must equal reality ([0ee0156](https://github.com/Ikalus1988/MisakaNet/commit/0ee0156c9c12fc65ebb828a6f0ab917b63ab603a)) * **ci:** fork PR 的 audit 假红 —— Auto-Merge Gate 拿着只读 token 去 merge ([dc50c25](https://github.com/Ikalus1988/MisakaNet/commit/dc50c25ce29d861f9e2b79c3da034acca46a1669)) * **ci:** stop path-only push filters from running branch CI on tag pushes ([fb31b76](https://github.com/Ikalus1988/MisakaNet/commit/fb31b7695d7e59c4e752ddd29163758405400900)) * **ci:** the docs gate merged without a trace downstream and refused without a word ([a776f9e](https://github.com/Ikalus1988/MisakaNet/commit/a776f9e88d48d477cd6f2e66f05de7a6868afcb1)) * **ci:** two blockers an adversarial review found — a green run that verified nothing, and a docs ([3761785](https://github.com/Ikalus1988/MisakaNet/commit/3761785b7163dd70876191a28b8e4461a2a95b01)) * **ci:** 对抗式复核找出的两个 blocker —— 绿着但什么都没验证,以及只看第一页的门禁 ([ef7873e](https://github.com/Ikalus1988/MisakaNet/commit/ef7873e03d0064cb2d28c97e6959ea4ab0625e83)) * **ci:** 路径过滤不排除 tag 推送,三个分支 CI 白跑 ([8c59cf5](https://github.com/Ikalus1988/MisakaNet/commit/8c59cf59893ff76e8472f152ed965315d4125ebc)) * **core:** the local search no longer enforces a quota the service retired ([e38a1c3](https://github.com/Ikalus1988/MisakaNet/commit/e38a1c3adf638a24402dad3411aabce3560f1d00)) * **core:** 本地检索不再执行一个已被取消的配额(第 6 次就被硬门挡住) ([414bbd3](https://github.com/Ikalus1988/MisakaNet/commit/414bbd353402f7e53a1ced21ddbe9207521dbf4b)) * correct broken link in gemini-cli.md (follow-up to [#1942](https://github.com/Ikalus1988/MisakaNet/issues/1942)) ([#1969](https://github.com/Ikalus1988/MisakaNet/issues/1969)) ([8044678](https://github.com/Ikalus1988/MisakaNet/commit/80446788044efb7a534cb0109e4ab78cd50c601b)) * **data:** a generated file must name a generator that exists, and a consumer someone can read ([f1b0bba](https://github.com/Ikalus1988/MisakaNet/commit/f1b0bba9083399af602ee6ffd6dfaf89a753a9a6)) * **data:** 无消费者的生成物 —— 删掉静默死亡的镜像任务,并让每个生成物都有生成者与消费者 ([e430a17](https://github.com/Ikalus1988/MisakaNet/commit/e430a17a3c728f62e2a9fd88eac93859a84f74f9)) * **docs:** Claude Code reads MCP servers from ~/.claude.json, not settings.json ([fb9a963](https://github.com/Ikalus1988/MisakaNet/commit/fb9a96344db17c5d6450ce73ced85558c3cabd7f)) * **docs:** Claude Code 的 MCP 配置是 ~/.claude.json 而非 settings.json(外加 agent 清单与坏链接) ([f5626de](https://github.com/Ikalus1988/MisakaNet/commit/f5626de01448d86ce9a2c873cd6c2321dededdbc)) * **release:** a release PR needs a human, and its changelog is checked before it ships ([4824628](https://github.com/Ikalus1988/MisakaNet/commit/482462869e8d4c3da24ba2db6c53a7b67c85e730)) * **repo:** a file cannot be ignored and tracked at the same time — six were ([14f0691](https://github.com/Ikalus1988/MisakaNet/commit/14f06910c5a7a2b2e9418ba48983f1d1117c567a)) * **repo:** 被跟踪又被忽略的文件 —— 6 个(每跑一次检索就弄脏工作树) ([e176968](https://github.com/Ikalus1988/MisakaNet/commit/e176968284ae6470a2c14f31395e0f346e410b16)) * **setup:** a failed probe behind a proxy is inconclusive, not "unreachable" ([23c3e19](https://github.com/Ikalus1988/MisakaNet/commit/23c3e19ce17edda4423ee2ef3f87106babb55852)) * **setup:** 代理环境下的探测失败应判"不可信"而非"端点不可达" ([b380d68](https://github.com/Ikalus1988/MisakaNet/commit/b380d684078721776837686484fd733db0ce70ca)) * **tests:** settings.json 门禁对着正确的 Gemini CLI 文档开了火 ([a4a9ee7](https://github.com/Ikalus1988/MisakaNet/commit/a4a9ee78e38029467f6fcf72dca9bb458113a1a4)) * **tests:** the settings.json gate fired on a correct Gemini CLI doc ([819cfbd](https://github.com/Ikalus1988/MisakaNet/commit/819cfbd95d495ed717779031a973da46feed23b5)) * the review's follow-ups — three regressions we shipped, two gates that could not fail, and a ([c7e24dd](https://github.com/Ikalus1988/MisakaNet/commit/c7e24dd9401fa2a67a03113fb3478fb1e8fcb645)) * 复核的后续 —— 三个回归、四个跑不出失败的门禁、一课在教已取消的机制 ([c89ee77](https://github.com/Ikalus1988/MisakaNet/commit/c89ee77915112a8c815d5f9164d2b4c9394dd293)) ### Documentation * **action:** README 里补上 action 用法;并修掉所有文档片段缺失的 actions: read ([bae4e2b](https://github.com/Ikalus1988/MisakaNet/commit/bae4e2b069ce6fb59c6e089ed7eaeea82016eb78)) * **action:** show the action in the README, and grant the scope it needs ([36a9a59](https://github.com/Ikalus1988/MisakaNet/commit/36a9a59c1474c1ddcaef2a1e5bb418a8854945fa)) * **integrations:** one matrix for "do you support X", with who checked it ([3e1cf5c](https://github.com/Ikalus1988/MisakaNet/commit/3e1cf5c83a220dce386e10d11d392aab4af9961a)) * **integrations:** 一张带证据等级的兼容矩阵(18 个 agent,含各家配置键陷阱) ([6cdb40c](https://github.com/Ikalus1988/MisakaNet/commit/6cdb40c53a128951863b2200842966e62b874010)) * **mcp:** say what `misakanet_memory_context`'s parameters *mean*, not what the schema already says ([29a375b](https://github.com/Ikalus1988/MisakaNet/commit/29a375b9e101cb7d376c8e0ee09ab5933a9d8b36)) * **mcp:** say what `misakanet_memory_context`'s parameters mean, not what the schema already says ([13d2451](https://github.com/Ikalus1988/MisakaNet/commit/13d245180a1612ba7d54046d5779921122aaad2e)) * **referral:** point at the issue that actually tracks the missing server-side record ([da0f581](https://github.com/Ikalus1988/MisakaNet/commit/da0f581f0e40d6123ebc8b6350a996308cf32868)) ## [2.32.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.32.0...v2.32.1) (2026-09-20) ### Bug Fixes * **worker:** flush the traffic counter five times less often, because it was spending the day's KV budget ([57929d9](https://github.com/Ikalus1988/MisakaNet/commit/57929d9959df592631da03ad451cbd70e57afad3)) ## [2.32.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.31.0...v2.32.0) (2026-09-20) ### Features * **ci:** the docs auto-merge channel gets a way in — a maintainer's label ([26783c9](https://github.com/Ikalus1988/MisakaNet/commit/26783c963c309850bf3a05d67693f331ce3f6b07)) * **deps:** the documented dev install installs this repository, not just its dependencies ([cde3c56](https://github.com/Ikalus1988/MisakaNet/commit/cde3c563fcd3a5f655ed6f59acc5cb814e56d46a)) * **lesson:** alembic upgrade failure diagnosis ([#1553](https://github.com/Ikalus1988/MisakaNet/issues/1553)) ([#1713](https://github.com/Ikalus1988/MisakaNet/issues/1713)) ([9b9385a](https://github.com/Ikalus1988/MisakaNet/commit/9b9385a2e0ae26f1a04e24614b82029dac1850d0)) * **lesson:** alembic upgrade head fails with exit code 255 ([f00499e](https://github.com/Ikalus1988/MisakaNet/commit/f00499e7fa93dc072b41509129e66fa3c862b9ae)) * **lesson:** Docker multi-stage build OOM-killed with exit code 137 ([9bb2954](https://github.com/Ikalus1988/MisakaNet/commit/9bb29544ee6f83960e74290704a230eb65274947)), closes [#1460](https://github.com/Ikalus1988/MisakaNet/issues/1460) * **lesson:** LLM cost telemetry undercounting ([#1672](https://github.com/Ikalus1988/MisakaNet/issues/1672)) ([#1830](https://github.com/Ikalus1988/MisakaNet/issues/1830)) ([1380a9c](https://github.com/Ikalus1988/MisakaNet/commit/1380a9cedfa2a37fdd939dc0053f416bdf0a35aa)) * **lesson:** LLM god-moding in roleplay ([#1650](https://github.com/Ikalus1988/MisakaNet/issues/1650)) ([#1815](https://github.com/Ikalus1988/MisakaNet/issues/1815)) ([1415ff2](https://github.com/Ikalus1988/MisakaNet/commit/1415ff20dc0debbddc2041a7c505a4be8e17ad0b)) * **lesson:** Mock Attribute Cascade — adding attribute access breaks existing tests ([f8ba2a9](https://github.com/Ikalus1988/MisakaNet/commit/f8ba2a9cd82293c2db52bb372ad4ee87d2cde272)) * **lesson:** NPC dispatch speaker/location dislocation ([#1655](https://github.com/Ikalus1988/MisakaNet/issues/1655)) ([#1814](https://github.com/Ikalus1988/MisakaNet/issues/1814)) ([b727653](https://github.com/Ikalus1988/MisakaNet/commit/b72765360606c2fffa8b6ef4de32c3f901978664)) * **lesson:** Prompt cache prefix invalidation causes location hallucination ([eebe4d8](https://github.com/Ikalus1988/MisakaNet/commit/eebe4d86bb8274024e4af3ece8fbbf7b61bcbb07)) * **lesson:** Prompt cache prefix invalidation causes location hallucination ([1bae9ae](https://github.com/Ikalus1988/MisakaNet/commit/1bae9ae77df9fd1233a5574929ad18e05c47265f)), closes [#1501](https://github.com/Ikalus1988/MisakaNet/issues/1501) * **lesson:** Pronoun misidentified as NPC in roleplay extraction ([c4d6089](https://github.com/Ikalus1988/MisakaNet/commit/c4d6089504447ad272d1a90197999def5190fb53)), closes [#1499](https://github.com/Ikalus1988/MisakaNet/issues/1499) * **lesson:** Pronoun misidentified as NPC in roleplay extraction ([#1907](https://github.com/Ikalus1988/MisakaNet/issues/1907)) ([c4d844b](https://github.com/Ikalus1988/MisakaNet/commit/c4d844b0ac8037b26f2dfb5775fc2a6c98d5f0ad)) * **lesson:** SSE streaming failures via proxy or client parsing ([#1714](https://github.com/Ikalus1988/MisakaNet/issues/1714)) ([4181fbe](https://github.com/Ikalus1988/MisakaNet/commit/4181fbe7ffe9bc5ab67adab3ab33c8d5ca7cb543)) * **lesson:** Vertex AI vs Gemini model ID naming conventions ([#1715](https://github.com/Ikalus1988/MisakaNet/issues/1715)) ([d223abd](https://github.com/Ikalus1988/MisakaNet/commit/d223abdde2a26508467e76f34a579220f7562d9a)) * **scripts:** intake coverage checker ([#1673](https://github.com/Ikalus1988/MisakaNet/issues/1673)) ([#1829](https://github.com/Ikalus1988/MisakaNet/issues/1829)) ([702abc9](https://github.com/Ikalus1988/MisakaNet/commit/702abc9515f5ec139abfac84dd2ccca335111f1b)) * **site:** the home page finally says how to start ([#1891](https://github.com/Ikalus1988/MisakaNet/issues/1891)) ([a3a8fd0](https://github.com/Ikalus1988/MisakaNet/commit/a3a8fd08f3ebb5300b60f87840c9d33d523746b7)) * **worker:** count which key family spends the KV write budget, before moving anything ([2a3de37](https://github.com/Ikalus1988/MisakaNet/commit/2a3de378e9a46fd6c4cdda2de594b28ae39ad530)) ### Bug Fixes * **aliases:** evidence points at source files, and a gate keeps it there ([4a8b3f5](https://github.com/Ikalus1988/MisakaNet/commit/4a8b3f53951bedc25d6957fbe2390352b70873e9)) * **ci:** harden auto-draft tombstone inputs ([d8f8cd3](https://github.com/Ikalus1988/MisakaNet/commit/d8f8cd3b06039a94f23682a26402f99e743d3a16)) * **ci:** make crash tombstone auto-draft reachable ([44dc16a](https://github.com/Ikalus1988/MisakaNet/commit/44dc16a1169d289442f03c7ad54b63c63d2774bd)) * **ci:** the branch sync stops freezing CI on the branches it syncs ([ec63a9b](https://github.com/Ikalus1988/MisakaNet/commit/ec63a9b1d827d2e885d7196e50a469f386c3632d)) * **ci:** the branch sync stops turning contributors' PRs red ([7f51d62](https://github.com/Ikalus1988/MisakaNet/commit/7f51d62813ad28054acd4a84030e8acb68dec9f2)) * **ci:** the docs auto-merge gate stops treating lessons as documentation ([b2a0f4c](https://github.com/Ikalus1988/MisakaNet/commit/b2a0f4cc8481037c6eceada53dd740152f74bc64)) * **ci:** the docs channel could never run for the contributors it exists for ([79359ef](https://github.com/Ikalus1988/MisakaNet/commit/79359ef391e79f98c9cded1a8327c325e830d586)) * **ci:** the docs gate re-evaluates when eligibility changes without a push ([0113787](https://github.com/Ikalus1988/MisakaNet/commit/01137872ceb1d7d64d0b4530caefbdb4d6f35bfc)) * **ci:** the five things the review of today's changes found ([a5b08fc](https://github.com/Ikalus1988/MisakaNet/commit/a5b08fcd1c26a78141b9cf1fbf9baf7561a2e6e8)) * **ci:** the npm record step must survive main moving under it ([#1917](https://github.com/Ikalus1988/MisakaNet/issues/1917)) ([607bd22](https://github.com/Ikalus1988/MisakaNet/commit/607bd2205e19cd8f7e1054600a98b547e2f06a0c)) * **ci:** the sync push really uses the PAT, instead of believing it does ([082c7fb](https://github.com/Ikalus1988/MisakaNet/commit/082c7fbadb3cc4699b51701c95290b9c7bc107af)) * **ci:** the sync's read-back counts Actions runs, not any check run ([afd65e8](https://github.com/Ikalus1988/MisakaNet/commit/afd65e8bdc4242309423068ed27c6d9ebb9c203e)) * **ci:** the two scheduled syncs can read a credential again ([b98e835](https://github.com/Ikalus1988/MisakaNet/commit/b98e835e98b3a1257da49a9cfcd9c1a56bfe5a75)) * **cron:** the leaderboard snapshot is written only when the leaderboard changes ([#1918](https://github.com/Ikalus1988/MisakaNet/issues/1918)) ([09aee05](https://github.com/Ikalus1988/MisakaNet/commit/09aee05d1ce3adcda8558f92c5966344c5801619)) * **d1:** add multilingual aliases to SECTION_ALIASES for localized lessons ([#1738](https://github.com/Ikalus1988/MisakaNet/issues/1738)) ([#1799](https://github.com/Ikalus1988/MisakaNet/issues/1799)) ([3baeee1](https://github.com/Ikalus1988/MisakaNet/commit/3baeee13b59de99f4fe608ab63cb31da53594384)) * **guard:** exempt test files from markdown leak detection (Rule 3) ([#1701](https://github.com/Ikalus1988/MisakaNet/issues/1701)) ([aa81323](https://github.com/Ikalus1988/MisakaNet/commit/aa813230b50b5cd450be98885c986ef02f5ed7e1)) * **mcp:** apply the domain filter to FAQ answers ([#1743](https://github.com/Ikalus1988/MisakaNet/issues/1743)) ([#1800](https://github.com/Ikalus1988/MisakaNet/issues/1800)) ([f42b604](https://github.com/Ikalus1988/MisakaNet/commit/f42b604acb11a4fa68661d7ee1e908724e336cbb)) * **registry:** the publish waits for the PyPI version it points at ([7197098](https://github.com/Ikalus1988/MisakaNet/commit/7197098e330a831300a7b8fe6d352e86e0e2cc91)) * **release:** the release flow never marked its release PR as tagged, so every release blocked the next ([#1924](https://github.com/Ikalus1988/MisakaNet/issues/1924)) ([0df5777](https://github.com/Ikalus1988/MisakaNet/commit/0df5777d4179b2fff18c9a19336bdd0cb6cc976e)) * **tests:** the two code-scanning alerts this session opened, closed at the source ([4032027](https://github.com/Ikalus1988/MisakaNet/commit/4032027c5a8f1b75bdf8cc5b5d13fec7b1f227a9)) * **worker:** KV write health becomes global, and the reason names the cause ([0c141be](https://github.com/Ikalus1988/MisakaNet/commit/0c141be64dbefc606250917789bc13dbd1f86866)) * **worker:** the KV quota has a second phrasing, and it has no error code ([9901093](https://github.com/Ikalus1988/MisakaNet/commit/9901093e169e127e50f8c627081a76536e4b4c50)) ### Documentation * add cross-ref to alembic-upgrade-head-failed ([6013162](https://github.com/Ikalus1988/MisakaNet/commit/6013162c148ff4a1cfe277324e2cc2e3e07b3b33)) * assess the README against alibaba/open-code-review, and un-orphan zh-CN ([c1164b0](https://github.com/Ikalus1988/MisakaNet/commit/c1164b04afb3fee51205f240900167d672b6c0df)) * **bounty-notes:** misakanet-setup v0.5.1 review and macOS test report ([#1761](https://github.com/Ikalus1988/MisakaNet/issues/1761)) ([97c41bd](https://github.com/Ikalus1988/MisakaNet/commit/97c41bdffb002f21ff08e9dde5d39201fa10c6c1)) * **field-reports:** agent A/B comparative benchmark for issue [#1819](https://github.com/Ikalus1988/MisakaNet/issues/1819) ([#1842](https://github.com/Ikalus1988/MisakaNet/issues/1842)) ([ed30b30](https://github.com/Ikalus1988/MisakaNet/commit/ed30b30239c07da54b612ff31b96b3c50b166ebf)) * **field-reports:** say what not to paste, and stop claiming there are no reports ([5b9aa95](https://github.com/Ikalus1988/MisakaNet/commit/5b9aa9513910dcfd2cba439bccac753c38f1c64c)) * **lessons:** correct the mechanism in the token-push lesson, from the two real runs ([#1883](https://github.com/Ikalus1988/MisakaNet/issues/1883)) ([3535d0e](https://github.com/Ikalus1988/MisakaNet/commit/3535d0efab0f9e742902cb1e0ae70e3f97387ebe)) * **lessons:** the two ways today's CI automation was silently inert ([#1873](https://github.com/Ikalus1988/MisakaNet/issues/1873)) ([a6da633](https://github.com/Ikalus1988/MisakaNet/commit/a6da633cc131e6f48d4d9f26a6524d6e579249bd)) * **llms:** the root llms.txt becomes a pointer, because it was a second copy with no writer ([43444e0](https://github.com/Ikalus1988/MisakaNet/commit/43444e0a15ab2d2007890a8a9093a3273cdbfd7a)) * **maintainer:** how the branch sync's pushes work, and the three ways it silently failed ([826857f](https://github.com/Ikalus1988/MisakaNet/commit/826857f1aa600329377b681ba39556ca4b7e6f3c)) * **maintainer:** merge the backlog, growth and weakness assessments, and fact-check the review ([b1ae79e](https://github.com/Ikalus1988/MisakaNet/commit/b1ae79ee1a086607e564355e3b997b613038cbc8)) * **readme:** P0 items — License, a Troubleshooting index, and the version drift explained ([#1900](https://github.com/Ikalus1988/MisakaNet/issues/1900)) ([922ff0f](https://github.com/Ikalus1988/MisakaNet/commit/922ff0f6a7ec2a51b687797f493f256ee1f4143c)) * **readme:** restructure the front page — 759 lines to 298, without losing a fact ([9624315](https://github.com/Ikalus1988/MisakaNet/commit/9624315a0e589c190afb7a2611080f41b7e4873c)) * record that the D1-only token was proven sufficient, not assumed ([74b329f](https://github.com/Ikalus1988/MisakaNet/commit/74b329fb38cc59ca174158ae65ba2dc2ada818eb)) * the link count in the assessment is post-fix (114 / 40), not pre-fix ([6256536](https://github.com/Ikalus1988/MisakaNet/commit/6256536492606cf491f27d157b850203cf14401a)) ### Tests * **registry:** pin the env-passing contract the review established ([7db058f](https://github.com/Ikalus1988/MisakaNet/commit/7db058fc52a3b1f2a351b750d0c8aa0e38df09f0)) ### CI/CD * **guard:** notice when the PR gate never ran, and start it ([#1921](https://github.com/Ikalus1988/MisakaNet/issues/1921)) ([23a9ee5](https://github.com/Ikalus1988/MisakaNet/commit/23a9ee5519af3eda1873141f5f99871a9e3e4b11)) * name the secret the workflows actually read, and pin the rule that caught me ([677e65f](https://github.com/Ikalus1988/MisakaNet/commit/677e65fa4bb7137c9fcf660802a4027fc2596367)) * publish and deploy credentials come from the protected environment ([23d4e97](https://github.com/Ikalus1988/MisakaNet/commit/23d4e97ff85d2b7cceddf6d5c91b183c5cdb414b)) * re-trigger checks after the auto-sync bot merge ([b080e4f](https://github.com/Ikalus1988/MisakaNet/commit/b080e4f76c99fa6cb3a7dd994ed21a3ea47196ed)) * **release:** publishing to npm happens on release — the one human step is approving the run ([ad34eee](https://github.com/Ikalus1988/MisakaNet/commit/ad34eeeed644fec623e569e7bacc1353ae8419cb)) * run the scheduled syncs unattended, with a D1-only credential ([7db90f3](https://github.com/Ikalus1988/MisakaNet/commit/7db90f3b27b5b3068427276981e97020b6a81c31)) ## [2.31.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.30.2...v2.31.0) (2026-09-19) ### Features * **analytics:** record what a read did, without asking anyone to register for it ([#1857](https://github.com/Ikalus1988/MisakaNet/issues/1857)) ([1ce80dd](https://github.com/Ikalus1988/MisakaNet/commit/1ce80dd311fc5d8ac8ff9c619d208abde4aacc90)) * **bounty:** runnable, self-checking task fixtures for the [#1819](https://github.com/Ikalus1988/MisakaNet/issues/1819) measurement ([#1824](https://github.com/Ikalus1988/MisakaNet/issues/1824)) ([4bcead4](https://github.com/Ikalus1988/MisakaNet/commit/4bcead4ef37f8554ebfb7088c7dfd121ca9cc618)) * **ci:** add the workflow shell checker (W1-W5) ([#1646](https://github.com/Ikalus1988/MisakaNet/issues/1646)) ([cd00be8](https://github.com/Ikalus1988/MisakaNet/commit/cd00be85b82804e9d91446fc13a27a40273c9961)) * **ci:** an `/adopt` flow so a fork PR blocked on sign-off is not blocked at all ([#1786](https://github.com/Ikalus1988/MisakaNet/issues/1786)) ([19c6007](https://github.com/Ikalus1988/MisakaNet/commit/19c600718174d59365ca3de3a65f497ec0ecd777)) * **ci:** an opt-in auto-merge channel for lesson pull requests ([#1781](https://github.com/Ikalus1988/MisakaNet/issues/1781)) ([11ac11c](https://github.com/Ikalus1988/MisakaNet/commit/11ac11c7a99573785fd0d3ce669cbf44a6f0b3a7)) * **ci:** the MCP registry listing publishes itself, and is read back ([#1820](https://github.com/Ikalus1988/MisakaNet/issues/1820)) ([99119bd](https://github.com/Ikalus1988/MisakaNet/commit/99119bd752dbcacd1ad3e533cab33ad4becfbc60)) * **ci:** the MCP registry listing publishes itself, and is read back ([#1820](https://github.com/Ikalus1988/MisakaNet/issues/1820)) ([9019eaf](https://github.com/Ikalus1988/MisakaNet/commit/9019eaf68cd66d60c3987c613249f82d9afb6a18)) * **cli:** misakanet "<error>" works after a pip install — remote-first, in the package ([#1854](https://github.com/Ikalus1988/MisakaNet/issues/1854)) ([0082574](https://github.com/Ikalus1988/MisakaNet/commit/00825745e4d05838196e10a5c964c9ece6717911)) * **gate:** check that a lesson's cited source actually exists ([#1768](https://github.com/Ikalus1988/MisakaNet/issues/1768)) ([152d0ff](https://github.com/Ikalus1988/MisakaNet/commit/152d0ff1608ef68a5ff33ca8bcdb9c0206761ac2)) * **lessons:** optional structured fields — summary_plain, trigger, verify ([#1792](https://github.com/Ikalus1988/MisakaNet/issues/1792)) ([93cdabb](https://github.com/Ikalus1988/MisakaNet/commit/93cdabbf8ec8f4f10d1dc88adeeb74255bc15d87)) * **mcp:** accept client_id as a header, so reads need no registration for continuity either ([#1856](https://github.com/Ikalus1988/MisakaNet/issues/1856)) ([f943786](https://github.com/Ikalus1988/MisakaNet/commit/f9437863754c6b6eab06c8baa7986f96497a418f)) * **mcp:** accept self-declared context headers, so a read can be attributed without an account ([#1858](https://github.com/Ikalus1988/MisakaNet/issues/1858)) ([998d47f](https://github.com/Ikalus1988/MisakaNet/commit/998d47f4dd7c03bc88aa07465deb074d59a8b1d1)) * **metrics:** give the hit rate a denominator ([#1790](https://github.com/Ikalus1988/MisakaNet/issues/1790)) ([d747dc1](https://github.com/Ikalus1988/MisakaNet/commit/d747dc1857b4b775365fbf1bdcbc3387945c9aa7)) * **pypi:** an entry point that exists in the wheel, and a gate that proves it starts ([#1851](https://github.com/Ikalus1988/MisakaNet/issues/1851)) ([8f663af](https://github.com/Ikalus1988/MisakaNet/commit/8f663afc2aa67279f68a20461a35e50ded1435e7)) * **read:** anonymous reads are unlimited — the burst window is what is left ([#1855](https://github.com/Ikalus1988/MisakaNet/issues/1855)) ([dc3db36](https://github.com/Ikalus1988/MisakaNet/commit/dc3db363b286f13a90675d47621a698e7c6c44df)) * **retrieval:** a grounded query-alias table, and the measurement that justifies it ([#1770](https://github.com/Ikalus1988/MisakaNet/issues/1770)) ([c3e80e1](https://github.com/Ikalus1988/MisakaNet/commit/c3e80e198bb86631f850607e28cff258d785826f)) * **setup:** `--report --strict`, so the health report can gate CI ([#1791](https://github.com/Ikalus1988/MisakaNet/issues/1791)) ([2836930](https://github.com/Ikalus1988/MisakaNet/commit/28369306cfe1c3fa58a53a7b0ddb3a7c034e3260)) * **setup:** `--report` prints this machine's state as paste-safe YAML ([e3627b5](https://github.com/Ikalus1988/MisakaNet/commit/e3627b584ab02c4da621cd0ed82159992873235a)) * **setup:** `--silent` and `--report-json`, and how an IT department deploys this ([#1793](https://github.com/Ikalus1988/MisakaNet/issues/1793)) ([9131c54](https://github.com/Ikalus1988/MisakaNet/commit/9131c5443d63920f28cfd37f60b8772c8ec18e9a)) * **setup:** ask for permission in tiers, and show the manifest before writing ([#1843](https://github.com/Ikalus1988/MisakaNet/issues/1843)) ([d1a4573](https://github.com/Ikalus1988/MisakaNet/commit/d1a4573bbed247bcc0555c0638cbc5893c9edd7b)) * **setup:** codewhale becomes the fifth target ([#1751](https://github.com/Ikalus1988/MisakaNet/issues/1751)) ([06ff207](https://github.com/Ikalus1988/MisakaNet/commit/06ff207fd6229fba4c3ec82f5b9f7b3ef7538383)) * **setup:** every config the installer writes says who is reading, and 0.5.6 ([#1859](https://github.com/Ikalus1988/MisakaNet/issues/1859)) ([5ba85b5](https://github.com/Ikalus1988/MisakaNet/commit/5ba85b5bb300bd1230a1014fe07261b4af608e57)) * **setup:** three onboarding examples instead of one ([#1760](https://github.com/Ikalus1988/MisakaNet/issues/1760)) ([7923ea3](https://github.com/Ikalus1988/MisakaNet/commit/7923ea35d1c6a292e5ff7c524046babcb4f08d58)) * **voice:** the voice hook becomes an installer switch, opt-in, and it actually makes a sound ([#1755](https://github.com/Ikalus1988/MisakaNet/issues/1755)) ([2fc244b](https://github.com/Ikalus1988/MisakaNet/commit/2fc244b868cec0bb21f93452d6010cdef3759bb1)) * **voice:** turn the cue player into an attention router, with desktop notifications ([#1787](https://github.com/Ikalus1988/MisakaNet/issues/1787)) ([a58fa25](https://github.com/Ikalus1988/MisakaNet/commit/a58fa256e06fdfc5d0b5a5d755e7125adab47298)) ### Bug Fixes * **autostart:** the live findings of the 2026-09-18 setup review, plus a hook parity gate ([#1831](https://github.com/Ikalus1988/MisakaNet/issues/1831)) ([69c9a36](https://github.com/Ikalus1988/MisakaNet/commit/69c9a36773926438681b3cbf31738f9d11cb52e5)) * **ci:** do not report a missing PyYAML as a repo-wide YAML breakage ([#1764](https://github.com/Ikalus1988/MisakaNet/issues/1764)) ([837d2ae](https://github.com/Ikalus1988/MisakaNet/commit/837d2ae749a636f7e5affc401aa4cda414f714ac)) * **ci:** PR-Genius was computing its report and never delivering it ([#1807](https://github.com/Ikalus1988/MisakaNet/issues/1807)) ([90eb367](https://github.com/Ikalus1988/MisakaNet/commit/90eb3679611cc0d0e32e506c6f59ed7a697dfefe)) * **ci:** reconcile automations against their output, weekly ([#1811](https://github.com/Ikalus1988/MisakaNet/issues/1811)) ([68d68f3](https://github.com/Ikalus1988/MisakaNet/commit/68d68f35bf0f94b3541fdc32863aa018359cfa0a)) * **ci:** reconcile the two manual-only automations as well ([#1813](https://github.com/Ikalus1988/MisakaNet/issues/1813)) ([4b93f5f](https://github.com/Ikalus1988/MisakaNet/commit/4b93f5fe5071dca937995940f55fb3c1e742c7a2)) * **ci:** stop two workflows from starting on the completion of every other workflow ([#1809](https://github.com/Ikalus1988/MisakaNet/issues/1809)) ([be4b27c](https://github.com/Ikalus1988/MisakaNet/commit/be4b27cbe20419734098baaaa9eec247a8d37e3f)) * **ci:** the auto-merge channel compared a REST field to the GraphQL spelling ([#1797](https://github.com/Ikalus1988/MisakaNet/issues/1797)) ([40a5ba6](https://github.com/Ikalus1988/MisakaNet/commit/40a5ba61ffd42ef10d41e6484c198e656ff67c42)) * **ci:** the Auto-Merge Gate can finally merge something ([#1826](https://github.com/Ikalus1988/MisakaNet/issues/1826)) ([3087be1](https://github.com/Ikalus1988/MisakaNet/commit/3087be12690b914a97d1b08e22df09298625ecad)) * **ci:** the Auto-Merge Gate can finally merge something ([#1826](https://github.com/Ikalus1988/MisakaNet/issues/1826)) ([b31a331](https://github.com/Ikalus1988/MisakaNet/commit/b31a331549d0d8b1f9ee852557b1a6be82e29625)) * **ci:** the auto-merge stops writing its own changelog entry twice ([0fd40f1](https://github.com/Ikalus1988/MisakaNet/commit/0fd40f1ba94e4df99c620c542e9ef6a7c6aa479a)) * **ci:** the auto-merge stops writing its own changelog entry twice ([9ec0124](https://github.com/Ikalus1988/MisakaNet/commit/9ec0124fc89a077a87b2070e90303114c25ca04f)) * **ci:** the new lesson auto-merge channel was painting every PR red ([#1788](https://github.com/Ikalus1988/MisakaNet/issues/1788)) ([7c1d404](https://github.com/Ikalus1988/MisakaNet/commit/7c1d404f0097cbcd49c6626eb3a74db5b1de3dd5)) * **ci:** the node-counter mirror stops discarding the surfaces it just refreshed ([1ef2a91](https://github.com/Ikalus1988/MisakaNet/commit/1ef2a91cb507bfd4df1e3d4342ef696f2c1d6995)) * **ci:** the shape guard failed honest PRs for mentioning "docs-only" in prose ([#1810](https://github.com/Ikalus1988/MisakaNet/issues/1810)) ([23ac0a8](https://github.com/Ikalus1988/MisakaNet/commit/23ac0a8dabc1ca3986e157aacb95db0203ea2249)) * **codex:** the installer said the Codex hook could not be confirmed — it can be, and it was ([#1744](https://github.com/Ikalus1988/MisakaNet/issues/1744)) ([af54bd9](https://github.com/Ikalus1988/MisakaNet/commit/af54bd9d195a51a9c8663b9d97c42620bbdb72a7)) * **contribute:** a failed contribution takes its branch back ([#1848](https://github.com/Ikalus1988/MisakaNet/issues/1848)) ([6d71e46](https://github.com/Ikalus1988/MisakaNet/commit/6d71e462b2d50ac465b0335d823bad4d23c99865)) * **docs:** point the site at a host that exists, and stop the install page selling the wrong product ([#1805](https://github.com/Ikalus1988/MisakaNet/issues/1805)) ([c6a900a](https://github.com/Ikalus1988/MisakaNet/commit/c6a900ac1fa1cea64d17b506c4ff7ebe8d3bc099)) * **docs:** put the localized READMEs and the lessons badge under the count gate ([#1806](https://github.com/Ikalus1988/MisakaNet/issues/1806)) ([feef371](https://github.com/Ikalus1988/MisakaNet/commit/feef371ae43e6df6eff83444f1ef36696d2c4054)) * **doctor:** probe the MCP handshake, so the self-check is green on a healthy endpoint ([#1836](https://github.com/Ikalus1988/MisakaNet/issues/1836)) ([87176ec](https://github.com/Ikalus1988/MisakaNet/commit/87176ec4f91c7f1f1072596aacb7ea4e6f2b6727)) * **gate:** read quoted keys, so JSON frontmatter cannot hide a source ([#1771](https://github.com/Ikalus1988/MisakaNet/issues/1771)) ([280550b](https://github.com/Ikalus1988/MisakaNet/commit/280550b87f85699814070d13a1c457938d70fc1e)) * **intake-bot:** the comment it never posted, and the failure it swallowed ([#1860](https://github.com/Ikalus1988/MisakaNet/issues/1860)) ([2a0bb44](https://github.com/Ikalus1988/MisakaNet/commit/2a0bb44615ba99cc8aafb5f77beb253ce0ef1f0e)) * **intake:** stop keying the rate limit on a value the caller chooses ([#1850](https://github.com/Ikalus1988/MisakaNet/issues/1850)) ([71235b5](https://github.com/Ikalus1988/MisakaNet/commit/71235b52d8c1c918fec04825ead3ed6cf1f571f9)) * **lessons:** give the template frontmatter that actually parses ([#1796](https://github.com/Ikalus1988/MisakaNet/issues/1796)) ([47da66d](https://github.com/Ikalus1988/MisakaNet/commit/47da66d132894f24068f49edc6174299abba61ba)) * **mcp:** expose the Problem/Fix snippets in the row shaping, so hits have something to read ([#1737](https://github.com/Ikalus1988/MisakaNet/issues/1737)) ([986abcd](https://github.com/Ikalus1988/MisakaNet/commit/986abcd1ff3d7361b1ac0cd8c90b339a058cca47)) * **mcp:** lesson hits carry their content, not just an id and a title ([#1736](https://github.com/Ikalus1988/MisakaNet/issues/1736)) ([8d4f4b7](https://github.com/Ikalus1988/MisakaNet/commit/8d4f4b7bd329ba57bf2380765216e7f0c2ca3245)) * **metrics:** the intake ledger stops reporting a conversion rate it cannot observe ([#1808](https://github.com/Ikalus1988/MisakaNet/issues/1808)) ([039fb2c](https://github.com/Ikalus1988/MisakaNet/commit/039fb2c47c74d97c96db51c4e41bd7391081dfda)) * **misaka-run:** search for the error, not for the command line ([#1837](https://github.com/Ikalus1988/MisakaNet/issues/1837)) ([92528a7](https://github.com/Ikalus1988/MisakaNet/commit/92528a7b58d23daeca2958a151e4afda8d3c0265)) * **pr-genius:** say when the config was read with a degraded rule set ([#1812](https://github.com/Ikalus1988/MisakaNet/issues/1812)) ([8b8d820](https://github.com/Ikalus1988/MisakaNet/commit/8b8d820d1dba02489e627c1969e74c77e78d0a6e)) * **pypi:** stop declaring console scripts the wheel cannot run, and gate the honest state ([#1853](https://github.com/Ikalus1988/MisakaNet/issues/1853)) ([1e67774](https://github.com/Ikalus1988/MisakaNet/commit/1e67774b6a9e755b0d1aa15936b89e3d76fc7ff4)) * **python:** the four silent defects the 2026-09-18 Python-channel review found ([#1834](https://github.com/Ikalus1988/MisakaNet/issues/1834)) ([ff5b31e](https://github.com/Ikalus1988/MisakaNet/commit/ff5b31e059a6e6f7d7d9c4f53ea28c0da49e4177)) * **release:** the release PR can pass again — every pinned version gets a writer ([b105a77](https://github.com/Ikalus1988/MisakaNet/commit/b105a770f9487bd1694d46ad874fe9bfb4305d71)) * **release:** the release PR can pass again — every pinned version gets a writer ([854a64c](https://github.com/Ikalus1988/MisakaNet/commit/854a64c61d3182fab512dedc1526f0fce5978ba6)) * security and parsing holes found by an open-code-review scan ([#1773](https://github.com/Ikalus1988/MisakaNet/issues/1773)) ([4751461](https://github.com/Ikalus1988/MisakaNet/commit/4751461fe3b1ea8113a14f385eb7835192bf98db)) * **service:** make the endpoint self-report true, and release the installer as 0.5.5 ([#1833](https://github.com/Ikalus1988/MisakaNet/issues/1833)) ([445acaf](https://github.com/Ikalus1988/MisakaNet/commit/445acaf4bd086fadec5e1874d6fb6eda58e130c0)) * **setup:** a re-run now refreshes a stale hook — the upgrade nudge could never reach anyone ([#1745](https://github.com/Ikalus1988/MisakaNet/issues/1745)) ([e46e499](https://github.com/Ikalus1988/MisakaNet/commit/e46e499726478367e995d10091af3c6282297435)) * **setup:** derive the e2e stub token at runtime, so it stops looking like a credential ([#1832](https://github.com/Ikalus1988/MisakaNet/issues/1832)) ([2d0b5d5](https://github.com/Ikalus1988/MisakaNet/commit/2d0b5d584a3401f10150bf32fdb1ee9754ca1895)) * **setup:** install mode can fail again, and --help stops installing ([#1803](https://github.com/Ikalus1988/MisakaNet/issues/1803)) ([ce9164e](https://github.com/Ikalus1988/MisakaNet/commit/ce9164e311d5a1c484ec1e7879036f02ef4b1022)) * **setup:** keep the first backup, tighten the Hermes token file, and stop two silent failures ([#1774](https://github.com/Ikalus1988/MisakaNet/issues/1774)) ([87e19c1](https://github.com/Ikalus1988/MisakaNet/commit/87e19c16c5a5e587b2e3948c212fb3987c7ef797)) * **setup:** pre-allow the read-only tools, and make the rules block imperative ([#1762](https://github.com/Ikalus1988/MisakaNet/issues/1762)) ([4f8383a](https://github.com/Ikalus1988/MisakaNet/commit/4f8383a0ec01210d96763ff8d860c7fea1937199)) * **setup:** the packaged installer lifecycle, tested on 3 OSes x Node 18/20/22 ([#1818](https://github.com/Ikalus1988/MisakaNet/issues/1818)) ([b182013](https://github.com/Ikalus1988/MisakaNet/commit/b182013c668bfbfb6da87c79ee41a77029d3afb0)) * **setup:** tier ① must include the read-only grants; say the cost of ① out loud ([#1846](https://github.com/Ikalus1988/MisakaNet/issues/1846)) ([850a595](https://github.com/Ikalus1988/MisakaNet/commit/850a595060feceded3d5664d63b4457bd5ecbe0b)) * **setup:** uninstall must not delete hooks it did not write ([#1802](https://github.com/Ikalus1988/MisakaNet/issues/1802)) ([cd01a2a](https://github.com/Ikalus1988/MisakaNet/commit/cd01a2a3960911baaa2391599105fa84a55dcfa7)) * **setup:** upgrade a matcher-less voice entry ([#1757](https://github.com/Ikalus1988/MisakaNet/issues/1757)) ([526ca8d](https://github.com/Ikalus1988/MisakaNet/commit/526ca8d5b29530d120bd28a9f523ae2160576f7f)) * **setup:** verify only detected agent targets ([#1756](https://github.com/Ikalus1988/MisakaNet/issues/1756)) ([a509c94](https://github.com/Ikalus1988/MisakaNet/commit/a509c947b6ea8f4f62d0cf5a40a932ac5aa47b9f)) * **test:** alias evidence must be a file git tracks, not one that only exists locally ([#1776](https://github.com/Ikalus1988/MisakaNet/issues/1776)) ([b2543dc](https://github.com/Ikalus1988/MisakaNet/commit/b2543dcab9f6813c8c3c7e4e0962413f1b8af157)) * **worker:** rebuild the search index from D1, not from the corpus cache it may be racing ([#1739](https://github.com/Ikalus1988/MisakaNet/issues/1739)) ([e0ded51](https://github.com/Ikalus1988/MisakaNet/commit/e0ded5127e29dde1183360c58e9c4483cece8021)) * **worker:** registration storage moves to D1, so the KV daily cap cannot strand new users ([#1804](https://github.com/Ikalus1988/MisakaNet/issues/1804)) ([3139529](https://github.com/Ikalus1988/MisakaNet/commit/3139529c2bc86ecc6be0cc78e2d24e0c8b7d589a)) ### Documentation * a live Codex session calls misakanet_search — the last unverified link, verified ([61496cd](https://github.com/Ikalus1988/MisakaNet/commit/61496cd52e6b5176eb12c3da2665a47760e1cc74)) * bring the roadmap up to date, and report issue/PR state with numbers ([#1769](https://github.com/Ikalus1988/MisakaNet/issues/1769)) ([171698f](https://github.com/Ikalus1988/MisakaNet/commit/171698fef187512f134af2c9caeac23ef535b389)) * **field-reports:** the agent integration matrix, with the commands that produced it ([3c8e8ae](https://github.com/Ikalus1988/MisakaNet/commit/3c8e8aea60e51357b158c3dd29c3cc8f52712c37)) * **handoff:** [#1675](https://github.com/Ikalus1988/MisakaNet/issues/1675) and [#1731](https://github.com/Ikalus1988/MisakaNet/issues/1731) closed — both were "looks fixed" cases ([7bec8b2](https://github.com/Ikalus1988/MisakaNet/commit/7bec8b2c978f1630d104924f71a6783658deb32d)) * **handoff:** the Codex verification round and the upgrade path that could not reach anyone ([210a43c](https://github.com/Ikalus1988/MisakaNet/commit/210a43cec13c1511ff6075156f3a988dd673d472)) * **handoff:** the domain vocabulary round, and the third instance of the same mistake ([37d68cf](https://github.com/Ikalus1988/MisakaNet/commit/37d68cf84f2b8d874c89e5c054cdd491cd6306e2)) * **handoff:** the DSH plugin distribution round, and where the queue stands ([4141eea](https://github.com/Ikalus1988/MisakaNet/commit/4141eeaddcee44bf028e85acdbda2506ba873e2c)) * **maintainer:** blueprint completeness and strategy review ([#1766](https://github.com/Ikalus1988/MisakaNet/issues/1766)) ([e07844b](https://github.com/Ikalus1988/MisakaNet/commit/e07844b6d892d0aa76c3f42c5f269f9886f5fa20)) * **maintainer:** capability inventory, defect register, and a strategic assessment ([#1823](https://github.com/Ikalus1988/MisakaNet/issues/1823)) ([b9f1b55](https://github.com/Ikalus1988/MisakaNet/commit/b9f1b554e6df7fe5456ab7b2c2fde605837c1a7b)) * **maintainer:** handoff for 2026-09-16 ([#1789](https://github.com/Ikalus1988/MisakaNet/issues/1789)) ([9f422e0](https://github.com/Ikalus1988/MisakaNet/commit/9f422e01894a244e96aba25302391717722378f4)) * **maintainer:** handoff updated to the final state, with the production record ([#1795](https://github.com/Ikalus1988/MisakaNet/issues/1795)) ([835b260](https://github.com/Ikalus1988/MisakaNet/commit/835b2605abfcde0bb04322770127443646f49241)) * **maintainer:** the GitHub-side automation inventory, with run counts instead of impressions ([#1827](https://github.com/Ikalus1988/MisakaNet/issues/1827)) ([22b3f8b](https://github.com/Ikalus1988/MisakaNet/commit/22b3f8bb3d426a5cf81312ac91c3e500cdf2259b)) * **maintainer:** what the setup package is worth, judged from first principles rather than from its own README ([e089cdb](https://github.com/Ikalus1988/MisakaNet/commit/e089cdbbfe927208b34ae962cccc9036b397b031)) * **readme:** name the two channels, and stop printing an install command that cannot work ([#1852](https://github.com/Ikalus1988/MisakaNet/issues/1852)) ([75421a9](https://github.com/Ikalus1988/MisakaNet/commit/75421a91959b6a04b8cda18e54dc92e23dd6f1fe)) * **readme:** say what the installer actually does, in three layers, and how to check each one ([92f43d7](https://github.com/Ikalus1988/MisakaNet/commit/92f43d7b86831a2592b5311d393a5f3aaacad73d)) ### Refactoring * **domains:** make the domain vocabulary a reviewable file instead of whatever lessons already said ([#1742](https://github.com/Ikalus1988/MisakaNet/issues/1742)) ([2a0cdb2](https://github.com/Ikalus1988/MisakaNet/commit/2a0cdb21b7116a10e678ed073af6cb4ec0b4ee6a)) ### Tests * **e2e:** the permission tiers are checked on the artifact users install ([#1847](https://github.com/Ikalus1988/MisakaNet/issues/1847)) ([68c5dd3](https://github.com/Ikalus1988/MisakaNet/commit/68c5dd353727ab1bb991bfee2395e85fc3adfaaf)) ### CI/CD * **setup:** compound the packaged e2e at release time, and fix the hook suite's timing race ([#1828](https://github.com/Ikalus1988/MisakaNet/issues/1828)) ([7a6d9e2](https://github.com/Ikalus1988/MisakaNet/commit/7a6d9e2caee8144be5db3fe4b14bcfee2719c208)) ## [2.30.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.29.0...v2.30.0) (2026-09-12) ### Features * **pages:** sticky URLs — a retitled lesson keeps its slug ([43f9405](https://github.com/Ikalus1988/MisakaNet/commit/43f940598c586e7c1956a419c497d4c2ea957b96)) * **pages:** wire the lesson-page generator in, and fix what it would have published ([b01e585](https://github.com/Ikalus1988/MisakaNet/commit/b01e585d43fffc49d5a7d0377542f40a57e3150e)) ### Bug Fixes * **ci:** quote the digest timestamp — the second failure hidden behind the auth one ([37e4772](https://github.com/Ikalus1988/MisakaNet/commit/37e4772b36e4c7c467057ceccb57e399967f9480)) * **ci:** repair the digest step's indentation (my previous commit broke the YAML) ([a0dddca](https://github.com/Ikalus1988/MisakaNet/commit/a0dddca94b6d557a2371003d411d3e0d6e1dc2ed)) * **ci:** the salvage digest has been failing silently since at least 09-09 ([8c2d625](https://github.com/Ikalus1988/MisakaNet/commit/8c2d62525172a1e999d497e5e450a539b5226f8c)) * **codeql+intake:** bundle the plugin assets, guide agents to intakes, and close the needs-ac queue ([2c876ab](https://github.com/Ikalus1988/MisakaNet/commit/2c876ab1adbaa90f20396d0f3eddaee776f879c6)) * **codeql:** give the codex plugin manifest the assets its schema requires ([8c81993](https://github.com/Ikalus1988/MisakaNet/commit/8c819935443c8379c33da0ef55a9d06013e87fe3)) * **counts:** make the public lesson-count SSOT idempotent, refresh 25 stale sites ([462bb96](https://github.com/Ikalus1988/MisakaNet/commit/462bb965aaa32a80502a0a1f79c14dc166285113)) * **counts:** never manage a count inside .github/workflows/** — GITHUB_TOKEN can't push it ([bccc899](https://github.com/Ikalus1988/MisakaNet/commit/bccc899f1d2415afd7d4408403c5ac5b82882cfc)) * **dsh:** stop naming the protected [@deepseek-ai](https://github.com/deepseek-ai) component in the bundle patch ([#1636](https://github.com/Ikalus1988/MisakaNet/issues/1636)) ([ca20c65](https://github.com/Ikalus1988/MisakaNet/commit/ca20c659da48fdec613038a192e3fca664ea6bde)) * **intake:** stop scoring the pipeline's own boilerplate, and read inline evidence ([e40247b](https://github.com/Ikalus1988/MisakaNet/commit/e40247be6278e138c5027f574778126d91e6b713)) * **onboarding:** the join welcome now leads with the remote MCP, not a 1.1 MB download ([227f78f](https://github.com/Ikalus1988/MisakaNet/commit/227f78fcc21607a4b4abcaa378ebc732cce1cc4d)) * **plugin:** point interface assets at paths the scan's require_prefix+require_exists rule accepts ([07a1b9c](https://github.com/Ikalus1988/MisakaNet/commit/07a1b9c7f20d9bdad659495bf5da1cbeabab69e6)) * **release:** the release workflow could never tag — tag it from the manifest instead ([0787f3d](https://github.com/Ikalus1988/MisakaNet/commit/0787f3da8600a9c2e1a44e5b1f95fd130d34efe6)) * **release:** the release workflow held a second, wrong-metric lesson-count writer ([2604436](https://github.com/Ikalus1988/MisakaNet/commit/260443675d653fbfd3f9518c755cf05e8dfdb7df)) * **release:** wire the release bot to every version the invariants require ([334f274](https://github.com/Ikalus1988/MisakaNet/commit/334f27479774ed5e187c4b3e7f918e74e48c15dc)) * **search:** a relevance floor — "no lesson matches" must be reachable, and honest ([440324c](https://github.com/Ikalus1988/MisakaNet/commit/440324cf2bd3e25d15a4817c9f790d8d60ae485f)) * **search:** count pairable terms, not present ones, for the two-term bar ([cac0f78](https://github.com/Ikalus1988/MisakaNet/commit/cac0f78bd1be7c8d45a1d6a5afb3959d483ed369)) * **search:** let the worker build its own BM25 index — the one that never existed ([e7856da](https://github.com/Ikalus1988/MisakaNet/commit/e7856daf6e3ced8577ec15005a198031b39e27a2)) * **search:** match on tokens, not substrings — that is what the floor needed ([7bcf3cb](https://github.com/Ikalus1988/MisakaNet/commit/7bcf3cbd213e257d55e7e6255cb40edfddb3f875)) * **trust:** the registry listing claimed "verified debugging lessons" — fix it before 2.29.0 ships ([44c80ac](https://github.com/Ikalus1988/MisakaNet/commit/44c80ac1290268db1bb641a89ad478419f2d0156)) * **versions:** the agent-discovery cards sat at 2.16.0 — give them a writer (R6) ([ce74743](https://github.com/Ikalus1988/MisakaNet/commit/ce74743d0181fb21ccd5d080e074b066c7633e48)) * **worker:** index the lesson body, not just its summary ([209a6de](https://github.com/Ikalus1988/MisakaNet/commit/209a6dec107a007c27837852f1a42e055e7e252a)) * **workers:** do not quote the flagged literal in the helper's own comment ([7911c35](https://github.com/Ikalus1988/MisakaNet/commit/7911c3506eb4a4bf194d91cc0f7a483eec43b8c1)) * **worker:** search only ever saw 100 of 384 lessons ([7e2cc72](https://github.com/Ikalus1988/MisakaNet/commit/7e2cc720c3d5435d37bcb227d092930efc0e8865)) ### Documentation * **handoff:** record the residue incident, correct my dismissal of those alerts ([5d8eb16](https://github.com/Ikalus1988/MisakaNet/commit/5d8eb16f67b8cb89a45843982bba5dc6b77a0e48)) * **handoff:** record the second half of the day (§10) ([eaf5c8d](https://github.com/Ikalus1988/MisakaNet/commit/eaf5c8d98e313dc7932618d0c1a043d6e8b5db7c)) * **lessons:** merge three accepted submissions ([#1500](https://github.com/Ikalus1988/MisakaNet/issues/1500), [#1547](https://github.com/Ikalus1988/MisakaNet/issues/1547), [#1601](https://github.com/Ikalus1988/MisakaNet/issues/1601)) and record §11 ([dd30970](https://github.com/Ikalus1988/MisakaNet/commit/dd30970b763c09ae6337db7fb0b5e349451a6508)) * **lessons:** the two truncations that capped search recall; regenerate the corpus ([d4d4a50](https://github.com/Ikalus1988/MisakaNet/commit/d4d4a505e9571c894976aa85dabbc3bf1688d3a8)) * **maintainer:** handoff §11.7 — three submissions merged, the auto-reject root cause ([385d570](https://github.com/Ikalus1988/MisakaNet/commit/385d570cfe327c5a17243027ae37279a0f01d3b9)) * **maintainer:** handoff §12 — the consolidated backlog, ordered by what blocks whom ([48569a0](https://github.com/Ikalus1988/MisakaNet/commit/48569a0a670c99bd90de166720773b651127d2b7)) * **maintainer:** handoff §6.11 — the plugin-scanner secret-alert round trip ([c8c3307](https://github.com/Ikalus1988/MisakaNet/commit/c8c330750b7092211dc2f99d32aaa1e8984b18d7)) * **maintainer:** handoff-2026-09-12 — 计数 SSOT 真修 + 两个未接线的生成器 ([2d04869](https://github.com/Ikalus1988/MisakaNet/commit/2d048693eea52dc5fd28b739c94b7caeee2febe4)) * **maintainer:** review assessment — what needs review, the strategy, and the bounty question ([2cbf859](https://github.com/Ikalus1988/MisakaNet/commit/2cbf85914f49121aff5c0c1df272f83b6524a6f0)) * **registry:** record the 2.29.0 registry publish, and what publishing actually uploads ([33f1726](https://github.com/Ikalus1988/MisakaNet/commit/33f172652a3dd67cac5a8864404e57c318082668)) * sync version to v2.29.0 ([914e4c1](https://github.com/Ikalus1988/MisakaNet/commit/914e4c132b2e36d55c71adbe522e69f2dd3c8e11)) ### Tests * **ci:** run the salvage digest step locally, and fix its third stacked bug ([8287079](https://github.com/Ikalus1988/MisakaNet/commit/82870796210179b0e1f818d80b2bcef27935b267)) * **counts:** don't let Windows console encoding fail the CLI gate ([ccc56e1](https://github.com/Ikalus1988/MisakaNet/commit/ccc56e11b1497a8cdf9922a5973c1af95025f177)) * **workers:** derive fixture tokens at runtime instead of hardcoding them ([099c2da](https://github.com/Ikalus1988/MisakaNet/commit/099c2daa83bff5c056844936df0981d2e94566fe)) ## [2.29.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.28.1...v2.29.0) (2026-09-11) ### Features * **agents:** ci-lesson-search v1.0.1 — visible help + same-repo novel-intake notes ([#1558](https://github.com/Ikalus1988/MisakaNet/issues/1558)) ([297e93d](https://github.com/Ikalus1988/MisakaNet/commit/297e93dbac3238de508a3dd91b360f4c67fcfd78)) * **agents:** failure_harvest P0 — batch failure clustering to lesson drafts ([#1545](https://github.com/Ikalus1988/MisakaNet/issues/1545)) ([a9ef516](https://github.com/Ikalus1988/MisakaNet/commit/a9ef51659866d4519fab5accffe366d07b92d6e8)) * **agents:** intake-bot decision benchmark — offline, CI-gated ([#1543](https://github.com/Ikalus1988/MisakaNet/issues/1543)) ([9b56b78](https://github.com/Ikalus1988/MisakaNet/commit/9b56b78fbcaf033fb82b4af932921499ae94fbc9)) * **agents:** intake-bot MVP — error→suggest/collect decision CLI (stdlib-only) + testing guide ([255cb55](https://github.com/Ikalus1988/MisakaNet/commit/255cb557cfacd4ffb786bc0186c1b98be6d2acaf)) * **agents:** intake-bot v1.0 — stack-aware hits, noise gate, suggest-only, offline tests ([#1539](https://github.com/Ikalus1988/MisakaNet/issues/1539)) ([c7644cc](https://github.com/Ikalus1988/MisakaNet/commit/c7644cc2466f256f8e2321b99dcd78c903756557)) * **agents:** internal dogfood (ci-lesson-search→v1.0) + server intake dedupe gate ([#1540](https://github.com/Ikalus1988/MisakaNet/issues/1540)) ([5e458fc](https://github.com/Ikalus1988/MisakaNet/commit/5e458fcff26589a11ed44adc1d1129e3e5ed9029)) * **agents:** misaka-intake-bot externally reusable — flywheel prerequisites ([#1549](https://github.com/Ikalus1988/MisakaNet/issues/1549)) ([0c6c4c9](https://github.com/Ikalus1988/MisakaNet/commit/0c6c4c93d75446ba4ee26f6e16aa0159ccec78df)) * **contrib:** explain first-PR CI approval gate + DCO interplay ([#1537](https://github.com/Ikalus1988/MisakaNet/issues/1537)) ([99abe60](https://github.com/Ikalus1988/MisakaNet/commit/99abe60ec43cf8db6533c9435845a38d4f140023)) * **dsh:** declare dsh.bundle — register stdio MCP server as mcp__mis… ([51e3da7](https://github.com/Ikalus1988/MisakaNet/commit/51e3da7755f9512bf65fe20d6296e18a4b322ef3)) * **dsh:** declare dsh.bundle — register stdio MCP server as mcp__misakanet__* (B1) ([51cf15a](https://github.com/Ikalus1988/MisakaNet/commit/51cf15a1fbbd30211ce28c8b7e938767e86b25ad)) * **faithfulness:** RAGAS-style lesson usage evaluator ([#1162](https://github.com/Ikalus1988/MisakaNet/issues/1162)) ([#1448](https://github.com/Ikalus1988/MisakaNet/issues/1448)) ([9b49840](https://github.com/Ikalus1988/MisakaNet/commit/9b498401ad60b97821182cd7f3a460279fb1318b)) * **gap:** gap→lesson lifecycle cleanup with BM25 matching ([#1586](https://github.com/Ikalus1988/MisakaNet/issues/1586)) ([2d24372](https://github.com/Ikalus1988/MisakaNet/commit/2d243729e5c43426e5afc9efd63992fc91d5d99a)) * **i18n:** Spanish & Portuguese LatAm lessons ([#1496](https://github.com/Ikalus1988/MisakaNet/issues/1496)) ([3d64a7d](https://github.com/Ikalus1988/MisakaNet/commit/3d64a7d6a75a7a2336f6651493001f35cca6de66)) * **intake:** contributor tracking in intake pipeline ([#1599](https://github.com/Ikalus1988/MisakaNet/issues/1599)) ([cd22710](https://github.com/Ikalus1988/MisakaNet/commit/cd22710a9aa507868f2fac417eb358ce33374cf0)) * **intake:** weekly kind-audit workflow + question-answer-loop PRD ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([9475852](https://github.com/Ikalus1988/MisakaNet/commit/9475852587af95983ee110858255c0cde2540568)) * **lesson:** evidence_refs frontmatter support ([#1439](https://github.com/Ikalus1988/MisakaNet/issues/1439)) ([#1456](https://github.com/Ikalus1988/MisakaNet/issues/1456)) ([7139cff](https://github.com/Ikalus1988/MisakaNet/commit/7139cff229445169083880e1fd916c4c2231b9da)) * **lessons:** agent/LLM engineering lessons ×5 ([#1588](https://github.com/Ikalus1988/MisakaNet/issues/1588)) ([ae887d6](https://github.com/Ikalus1988/MisakaNet/commit/ae887d6ab7c80bebdb7525d6909827956ba424c5)) * **lessons:** batch-add provenance + evidence_level to 56 devops lessons ([#1437](https://github.com/Ikalus1988/MisakaNet/issues/1437)) ([24f3c06](https://github.com/Ikalus1988/MisakaNet/commit/24f3c062e4f814e92d5111cf428ce1cf17c46be7)) * **lessons:** CI failure pattern analysis — 52 cases → 3 lessons ([#1560](https://github.com/Ikalus1988/MisakaNet/issues/1560)) ([3ca66bb](https://github.com/Ikalus1988/MisakaNet/commit/3ca66bb820a6d072425cc2d5fe5415acd8ddd5f6)), closes [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) * **lessons:** docker compose basics + IAP TCP numpy bandwidth lessons ([#1573](https://github.com/Ikalus1988/MisakaNet/issues/1573)) ([99a228b](https://github.com/Ikalus1988/MisakaNet/commit/99a228b074b5acf97f672d3147aed6dbb2ecab0f)) * **lessons:** RAG injection benchmark — small models gain, large can be distracted ([ec2b172](https://github.com/Ikalus1988/MisakaNet/commit/ec2b1723e1810e4a75c4c2ed26ba9e27efed17cb)) * **lessons:** status lifecycle + supersedes chain ([#1455](https://github.com/Ikalus1988/MisakaNet/issues/1455)) ([1102752](https://github.com/Ikalus1988/MisakaNet/commit/11027526eca7ec7e5d1aa166f60921ead4b43966)) * **lessons:** Vertex AI cost attribution via BigQuery billing + Gemma ([#1580](https://github.com/Ikalus1988/MisakaNet/issues/1580)) ([03e704e](https://github.com/Ikalus1988/MisakaNet/commit/03e704e34d9f29a18f5213b40ab28e8178a7523e)) * **lessons:** Vertex AI embedding migration (Python + Go + Qwen) ([#1581](https://github.com/Ikalus1988/MisakaNet/issues/1581)) ([3403df4](https://github.com/Ikalus1988/MisakaNet/commit/3403df4876e3eb35cea8a57e51209ec30e8db488)) * **lessons:** Vertex streaming SSE + Gemini safety passthrough lessons ([#1587](https://github.com/Ikalus1988/MisakaNet/issues/1587)) ([89f4405](https://github.com/Ikalus1988/MisakaNet/commit/89f440541db205597fbeb5899e364524699cd7dd)) * **mcp:** content-level suspicion flag on retrieved lessons ([#1624](https://github.com/Ikalus1988/MisakaNet/issues/1624)) ([1bdc07a](https://github.com/Ikalus1988/MisakaNet/commit/1bdc07a24291cb298af8186dbec69c2c4184fd8d)) * **mcp:** disambiguate tool descriptions per Glama TDQS review ([c31640c](https://github.com/Ikalus1988/MisakaNet/commit/c31640c6732ae4094116224c835ab7c641c09228)) * **mcp:** L3 read-path trust notice on search/get_lesson responses ([#1614](https://github.com/Ikalus1988/MisakaNet/issues/1614)) ([65a8d94](https://github.com/Ikalus1988/MisakaNet/commit/65a8d9411f71fb3b5203904d95c208c84ff8010c)) * **mcp:** question routing at intake entries — kind auto-detect + no-match split ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([27f65f6](https://github.com/Ikalus1988/MisakaNet/commit/27f65f6bf3c24c26d08992a12207d26bfa42e953)) * **mcp:** TDQS pass — annotations + outputSchema on all 7 tools, requiredness clarity ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)/Glama review) ([bd241b1](https://github.com/Ikalus1988/MisakaNet/commit/bd241b1e4444884b76502be8dc6c397f7d1a0f20)) * **ops:** --registry also bumps server.json pypi entry (R3 stays satisfied post-release) ([2c4e2d4](https://github.com/Ikalus1988/MisakaNet/commit/2c4e2d4df9b3e2dca5cc35b0874d0ac023455350)) * **ops:** add event-driven sync for answered questions ([#1462](https://github.com/Ikalus1988/MisakaNet/issues/1462)) ([c92e146](https://github.com/Ikalus1988/MisakaNet/commit/c92e146a5135d71b26a374793f4da9a29ca10bb4)) * **ops:** add make doctor pre-flight checks for deploy readiness (audit QW3/T0.2) ([42c9c9a](https://github.com/Ikalus1988/MisakaNet/commit/42c9c9a3b8206bb8e310df38c779b533003504e5)) * **ops:** daily traffic aggregation to traffic-month cron ([#1585](https://github.com/Ikalus1988/MisakaNet/issues/1585)) ([cde6630](https://github.com/Ikalus1988/MisakaNet/commit/cde66308d455c971d9ced5ed2f1f1bd5d06e58eb)) * **ops:** single version-alignment tool + explicit channel policy (audit T2.1) ([8089018](https://github.com/Ikalus1988/MisakaNet/commit/80890185ec32f425fbf5b0ff3d1c9259677e6b01)) * **ops:** trigger sync_answered_questions.py on answered label/close ([ecc68ff](https://github.com/Ikalus1988/MisakaNet/commit/ecc68ffadd67e312b3e4846e19036c2bbce63549)) * package intake-bot as reusable GitHub Action (closes [#1525](https://github.com/Ikalus1988/MisakaNet/issues/1525)) ([89770da](https://github.com/Ikalus1988/MisakaNet/commit/89770da484a29dbbc6f6ed0b4518616a6d4c7d2c)) * package intake-bot as reusable GitHub Action (closes [#1525](https://github.com/Ikalus1988/MisakaNet/issues/1525)) ([02586be](https://github.com/Ikalus1988/MisakaNet/commit/02586be6900db6b1d16ab36fe48bf91280892ee1)) * **plugin:** Codex plugin manifest + privacy/terms pages ([#1612](https://github.com/Ikalus1988/MisakaNet/issues/1612)) ([a3ef999](https://github.com/Ikalus1988/MisakaNet/commit/a3ef9995c79f94c765ee5413d41e8bfd6cdbed74)) * **pr-genius:** post analysis as visible PR comment (mirror pr-agent /review) ([bc8f6c4](https://github.com/Ikalus1988/MisakaNet/commit/bc8f6c4285f6a1517564c7091624a0380be2a5d8)) * **prd5:** pull-based answer delivery — D1 questions store + FAQ search hits ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([1c92a3b](https://github.com/Ikalus1988/MisakaNet/commit/1c92a3b3beedba29be90a8ed1d6434d48d32fb9b)) * provenance batch 2 for 299 lessons + architecture review workflow ([#1411](https://github.com/Ikalus1988/MisakaNet/issues/1411)) ([22842a4](https://github.com/Ikalus1988/MisakaNet/commit/22842a48e6e48fdae8f053009f8e5731f768bc9a)) * publish rhythm tracker and calendar ([#1348](https://github.com/Ikalus1988/MisakaNet/issues/1348)) ([#1495](https://github.com/Ikalus1988/MisakaNet/issues/1495)) ([9f6be58](https://github.com/Ikalus1988/MisakaNet/commit/9f6be58383c66ef73ec3cacc6501f06102a98c9b)) * request classification logging ([#1347](https://github.com/Ikalus1988/MisakaNet/issues/1347)) ([#1490](https://github.com/Ikalus1988/MisakaNet/issues/1490)) ([b5b379b](https://github.com/Ikalus1988/MisakaNet/commit/b5b379bec16b295a55170e33c5ce00c72476fa6a)) * **scripts:** one-shot CF MCP OAuth auth tool (cf_mcp_auth.py) + lesson pointer ([16b2f45](https://github.com/Ikalus1988/MisakaNet/commit/16b2f457ab716ece63368fde8943ae6747ae6cd3)) * **search:** align D1 and all index consumers with canonical_lessons (T2.5) ([5bf023f](https://github.com/Ikalus1988/MisakaNet/commit/5bf023f759192abb6773101b36109d20ee021b7e)) * **search:** auto-discover all lesson directories (audit T2.2, library policy) ([3dc4c59](https://github.com/Ikalus1988/MisakaNet/commit/3dc4c5993f34fbaaba2736b05bb878fe022773e5)) * **search:** dedupe visible index by stem — mirrors dropped (audit T2.5) ([23eb4ef](https://github.com/Ikalus1988/MisakaNet/commit/23eb4ef038cc9b06dad53d760701ff71e50db6ca)) * **security:** L4 scan anonymous intake payloads ([#1620](https://github.com/Ikalus1988/MisakaNet/issues/1620)) ([8b975b6](https://github.com/Ikalus1988/MisakaNet/commit/8b975b69d393e8b12870c9cfefda4213c616c125)) * **security:** prompt-injection defense for agent-facing content surfaces ([#1613](https://github.com/Ikalus1988/MisakaNet/issues/1613)) ([e0925ee](https://github.com/Ikalus1988/MisakaNet/commit/e0925ee82140571eb1503cbcb648bba54632ac94)) * **verify:** DSH plugin listing verification script ([#1596](https://github.com/Ikalus1988/MisakaNet/issues/1596)) ([ff6405c](https://github.com/Ikalus1988/MisakaNet/commit/ff6405c9cc689da0b015470987f00f27467a5008)), closes [#1065](https://github.com/Ikalus1988/MisakaNet/issues/1065) * **verify:** Glama listing verification script ([#1595](https://github.com/Ikalus1988/MisakaNet/issues/1595)) ([f357d83](https://github.com/Ikalus1988/MisakaNet/commit/f357d83fdf3df5e3cadb365d7487a92aa685c4eb)), closes [#1063](https://github.com/Ikalus1988/MisakaNet/issues/1063) * **watcher:** memory dump watcher — auto-extract failure lessons ([#1597](https://github.com/Ikalus1988/MisakaNet/issues/1597)) ([5403e28](https://github.com/Ikalus1988/MisakaNet/commit/5403e28cbfbcb9c50de62181ea735ef77af0c757)) ### Bug Fixes * **agents:** intake-bot external-ready fixes + roof4u pilot report ([#1554](https://github.com/Ikalus1988/MisakaNet/issues/1554)) ([0a17ce6](https://github.com/Ikalus1988/MisakaNet/commit/0a17ce6b5a4e722a9a4332649bc2c315953ee8c9)) * **api:** wire ?search= filter to /api/lessons endpoint ([#1534](https://github.com/Ikalus1988/MisakaNet/issues/1534)) ([539365c](https://github.com/Ikalus1988/MisakaNet/commit/539365c0877f53b81f9de81077fb3e114328e306)), closes [#1524](https://github.com/Ikalus1988/MisakaNet/issues/1524) * **badges:** repair Smithery badge pipeline + normalize HOL badge style ([#1609](https://github.com/Ikalus1988/MisakaNet/issues/1609)) ([3d00195](https://github.com/Ikalus1988/MisakaNet/commit/3d001953bf692cb8a76a96ea4760d23d6da5407a)) * **ci:** align bot DCO messages with auto-clear + audit manual-run robustness ([#1503](https://github.com/Ikalus1988/MisakaNet/issues/1503)) ([3404129](https://github.com/Ikalus1988/MisakaNet/commit/34041298b3eb4d4d14bae40b30587bdeca22b5cc)) * **ci:** auto-clear stale needs-dco label + DCO comment hygiene ([#1502](https://github.com/Ikalus1988/MisakaNet/issues/1502)) ([8cc2967](https://github.com/Ikalus1988/MisakaNet/commit/8cc2967f3b89e942d7df41ac06b208c3906962c9)) * **ci:** auto-updating Smithery badge + workflow ([#1513](https://github.com/Ikalus1988/MisakaNet/issues/1513)) ([2e8070c](https://github.com/Ikalus1988/MisakaNet/commit/2e8070ca86b2f348b5eef0bdea5e6e8a27c354f5)) * **ci:** leaderboard-watch 并发快照冲突(`|| true` 掩盖 → detached HEAD) ([b286806](https://github.com/Ikalus1988/MisakaNet/commit/b286806acfe81b9b3f6bde1d9eb28d46654304f2)) * **ci:** quality-gate label writes best-effort (fork PR 403 noise) ([#1508](https://github.com/Ikalus1988/MisakaNet/issues/1508)) ([179c368](https://github.com/Ikalus1988/MisakaNet/commit/179c368a90ce109317c2c773aac60e1c50a32373)) * **ci:** register workflow skips [Onboarding] issues ([#1561](https://github.com/Ikalus1988/MisakaNet/issues/1561)) ([6a38aa3](https://github.com/Ikalus1988/MisakaNet/commit/6a38aa3c4ce0494a0d386c41bc4e5326c1135988)) * **ci:** restore uniqueAdd/uniqueRemove declarations in quality-gate ([#1510](https://github.com/Ikalus1988/MisakaNet/issues/1510)) ([6877be6](https://github.com/Ikalus1988/MisakaNet/commit/6877be64592f470840d402603ec90ba03ded9aec)) * **ci:** route question-kind intakes away from lesson auto-review ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([0e6e4f3](https://github.com/Ikalus1988/MisakaNet/commit/0e6e4f3f735529a1cc2435a7b668533616837a29)) * **ci:** strip code blocks in lesson security scan + pr-genius sys import ([#1445](https://github.com/Ikalus1988/MisakaNet/issues/1445)) ([75b90fb](https://github.com/Ikalus1988/MisakaNet/commit/75b90fb5340875fb01d463fc1468077460eea18a)) * **cli:** make search_knowledge --heal dry-run by default (audit QW5) ([cd9bf44](https://github.com/Ikalus1988/MisakaNet/commit/cd9bf4476a01a20aadb30880a36cf295276863bd)) * **codeql #69:** dsh install test — replace shell cp -r with fs.cpSync ([dcb9e0b](https://github.com/Ikalus1988/MisakaNet/commit/dcb9e0b80c21302ec09ea3d9b5714dbc88314f8b)) * **codeql:** [#68](https://github.com/Ikalus1988/MisakaNet/issues/68) paths-ignore + tmp-file fixes ([#70](https://github.com/Ikalus1988/MisakaNet/issues/70)/[#77](https://github.com/Ikalus1988/MisakaNet/issues/77)-79) ([c2928e7](https://github.com/Ikalus1988/MisakaNet/commit/c2928e714ce6fe7986761350cc07a04085669ae1)) * **deps:** bump sharp override to 0.35.4 — libheif advisories ([#1610](https://github.com/Ikalus1988/MisakaNet/issues/1610)) ([d65936e](https://github.com/Ikalus1988/MisakaNet/commit/d65936e41aab5055e69dca8b8129bc40ce2e5078)) * **deps:** remove vulnerable chromadb from hub extras (closes 4 dependabot alerts) ([cdae753](https://github.com/Ikalus1988/MisakaNet/commit/cdae7533dd07f95d18774077799de9be6c16931f)) * **docs:** restore search-lesson demo GIF referenced by README/README.ja ([b6b712b](https://github.com/Ikalus1988/MisakaNet/commit/b6b712bf8bc77783a0e96417f539aaaa04577d5d)) * **dsh-plugin:** drop dsh.bundle.patch + dsh.client to clear dsh.so L5.2 duplicate-loader-entry ([199c974](https://github.com/Ikalus1988/MisakaNet/commit/199c974653cb79a5c5619b9835a9f818c9bc3715)) * **email:** detectIntakeType recruitment/pitch/directory-claim/question ([#1582](https://github.com/Ikalus1988/MisakaNet/issues/1582)) ([cadaa65](https://github.com/Ikalus1988/MisakaNet/commit/cadaa65fe37261d8560950470f5ee64b52ae6153)) * **email:** rate limit — interval-based to count-based daily window ([#1583](https://github.com/Ikalus1988/MisakaNet/issues/1583)) ([b84fa94](https://github.com/Ikalus1988/MisakaNet/commit/b84fa9484349fab0e49cb9c38097031d73258c06)) * **fatal-guard:** dedupe register.js handler, UTF-8 env for tombstone converter ([#1413](https://github.com/Ikalus1988/MisakaNet/issues/1413)) ([185f2fa](https://github.com/Ikalus1988/MisakaNet/commit/185f2fa9059b84b7f8294d1db33ad61383a80350)) * **guard:** lessons.json schema check + misakanet-index deprecation ([#1594](https://github.com/Ikalus1988/MisakaNet/issues/1594)) ([84339fb](https://github.com/Ikalus1988/MisakaNet/commit/84339fb9017516735466e0aadd497de322070f34)), closes [#1374](https://github.com/Ikalus1988/MisakaNet/issues/1374) * **intake:** question kind never mints a lesson draft ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([6bd9c1c](https://github.com/Ikalus1988/MisakaNet/commit/6bd9c1c67e6883e083cd97a0ae1f2b3f697ae5e4)) * **lesson:** accept provenance.evidence + skip cross-dir duplicate titles ([#1507](https://github.com/Ikalus1988/MisakaNet/issues/1507)) ([edd44ae](https://github.com/Ikalus1988/MisakaNet/commit/edd44ae7a6e852c301affed24a3b43df49cc9730)) * **lessons:** gate new-vs-existing differentiation + same-stem mirror dedupe ([#1509](https://github.com/Ikalus1988/MisakaNet/issues/1509)) ([2d2030e](https://github.com/Ikalus1988/MisakaNet/commit/2d2030e1327ec82a0153389b5395ddf7b920f9f5)) * **lessons:** R-2000iC oil-change intake → rag lesson + metadata sync ([#1415](https://github.com/Ikalus1988/MisakaNet/issues/1415)) ([4ee1125](https://github.com/Ikalus1988/MisakaNet/commit/4ee112520ac07e680775bf51808f7af42b1f17e8)) * **mcp:** include structuredContent in tools/call results ([#1606](https://github.com/Ikalus1988/MisakaNet/issues/1606)) ([f850472](https://github.com/Ikalus1988/MisakaNet/commit/f850472868e035566b6e2b78c6a2e469f5abe571)) * **mcp:** migrate HTTP server to SDK v2 ([#1478](https://github.com/Ikalus1988/MisakaNet/issues/1478)) ([019ad73](https://github.com/Ikalus1988/MisakaNet/commit/019ad733a769330577e7a3319bc07bb96035805e)) * **ops:** align pypi entry to release line; npm-bundle lag policy (merged-main reality) ([89c35ac](https://github.com/Ikalus1988/MisakaNet/commit/89c35ac8d78f293d47077ba51c03a185321150af)) * **ops:** debounce keepalive probe failures + cron */15 ([#1598](https://github.com/Ikalus1988/MisakaNet/issues/1598)) ([34505cb](https://github.com/Ikalus1988/MisakaNet/commit/34505cb9c9103591bbd2de08e4c535ed38668753)) * publish openclaw session_nodes lesson ([#1600](https://github.com/Ikalus1988/MisakaNet/issues/1600)) ([cc387be](https://github.com/Ikalus1988/MisakaNet/commit/cc387bef99920c93d5f35512f791ac4003c6ca69)) * publish openclaw session_nodes lesson and add to index ([8728203](https://github.com/Ikalus1988/MisakaNet/commit/8728203aa098db5710d0d67bfe31bac846a7c46c)), closes [#1600](https://github.com/Ikalus1988/MisakaNet/issues/1600) * **quality:** don't flag TODO fill-ins in draft/template lessons (audit T3.3) ([aeb5c50](https://github.com/Ikalus1988/MisakaNet/commit/aeb5c500eaf5616e210558d767cd2a6b35233bba)) * **registry:** server.json description within official schema maxLength 100 ([c432564](https://github.com/Ikalus1988/MisakaNet/commit/c432564367e1a8bd054026c540cda5de3c31c7b3)) * **release:** release-please 也要 bump server.json 的 pypi 条目,否则 release PR 必然测挂 ([ef84bd4](https://github.com/Ikalus1988/MisakaNet/commit/ef84bd4fd1dc675f97b9a9755ed8ed7ab83e4649)) * **release:** release-please 提交自带 sign-off,release PR 才能过 DCO ([98b7bd3](https://github.com/Ikalus1988/MisakaNet/commit/98b7bd3f03992d2bf56a78d9a98f044b1f1b5671)) * **release:** signoff 必须是 "Name <email>" 字符串,true 会让 release-please 直接报错 ([03f66f8](https://github.com/Ikalus1988/MisakaNet/commit/03f66f86df5535554a584b327a5b0d4ebeeab0e6)) * **review:** P0 dedup trim parity + P1 FAQ progressive disclosure; dual-axis review doc ([ed96887](https://github.com/Ikalus1988/MisakaNet/commit/ed9688769a2cc8cde29184e4efddd28590156294)) * rewrite _parse_yaml_minimal for arbitrary depth nesting + add pyyaml ([6e023ed](https://github.com/Ikalus1988/MisakaNet/commit/6e023ed3fec9b8b527b71fb1c07b419e6128e7bf)) * **search:** address PR [#1482](https://github.com/Ikalus1988/MisakaNet/issues/1482) review — facade corpus refresh, robust telemetry, narrowed TODO tolerance ([7cf63ec](https://github.com/Ikalus1988/MisakaNet/commit/7cf63eca56986a173b5b7763995c2c50dfe74ab7)) * **search:** expand hyphenated compound tokens in BM25 tokenizer ([#1584](https://github.com/Ikalus1988/MisakaNet/issues/1584)) ([aca5d58](https://github.com/Ikalus1988/MisakaNet/commit/aca5d58637f23f6d57c62a3853140a03768b6e94)) * **search:** restore working BM25 facade for MCP/HTTP servers (audit QW4) ([0d26c9a](https://github.com/Ikalus1988/MisakaNet/commit/0d26c9a7c2592841177a5751e61c7e55f153ee0b)) ### Documentation * add lesson on curl SSL errors behind corporate proxies (rebased [#1532](https://github.com/Ikalus1988/MisakaNet/issues/1532)) ([591d14c](https://github.com/Ikalus1988/MisakaNet/commit/591d14cd0a54846f28b6487f480addebad23e960)) * add lesson on curl SSL errors behind corporate proxies (rebased) ([ccac8f0](https://github.com/Ikalus1988/MisakaNet/commit/ccac8f0e3356668d7e9ce5854acfb07532904bfd)) * add lesson on pip SSL timeout behind corporate proxies (rebased) ([b8e1ee4](https://github.com/Ikalus1988/MisakaNet/commit/b8e1ee4e2b63f5e6accdc84d5f82395c2cbc3254)) * **agents:** add MCP section — endpoint, transport/streaming, tools, registration ([f3ed666](https://github.com/Ikalus1988/MisakaNet/commit/f3ed666710f428388fb71e4c0d71008d15bc789a)) * **agents:** AGENTS.md becomes an operating manual for this repo, not just a usage guide ([710e7de](https://github.com/Ikalus1988/MisakaNet/commit/710e7de8f5e933531b5cad587c04a06c0f2784a6)) * **agents:** correct the misakanet-web deploy path — it is automatic ([acd6b3d](https://github.com/Ikalus1988/MisakaNet/commit/acd6b3dabc5542fd702c35d36b29d08371bf7dee)) * **agents:** design — reusable intake bot for crawler repos (suggest + gated intake) ([8f9f3d8](https://github.com/Ikalus1988/MisakaNet/commit/8f9f3d8b15f1356dcce1c8a8df0cdc293c8554e2)) * **agents:** drop two low-value sections from AGENTS.md ([e08dc0a](https://github.com/Ikalus1988/MisakaNet/commit/e08dc0a5a527d22512ded641056fc9b787a55bb0)) * **agents:** external-usage — add [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) long-running pilot callout (progress 1/20), fix stale ≥50-samples note ([7e3f2ff](https://github.com/Ikalus1988/MisakaNet/commit/7e3f2ff63ba88f62da9c05501951e8ebc8c0f41a)) * **agents:** intake-bot direction approved — MVP shipped, split into [#1524](https://github.com/Ikalus1988/MisakaNet/issues/1524)-[#1528](https://github.com/Ikalus1988/MisakaNet/issues/1528) ([84f93b8](https://github.com/Ikalus1988/MisakaNet/commit/84f93b8b4bb5cef276171a16287f6d72d29ec69e)) * **agents:** move AGENTS.md §6–§9 detail into docs/agents/repo-operations.md ([d934ec6](https://github.com/Ikalus1988/MisakaNet/commit/d934ec6c75039e980f2c824d21426876b79de841)), closes [#1527](https://github.com/Ikalus1988/MisakaNet/issues/1527) * **agents:** 排错手册补两条必踩的 CI 陷阱(action_required / release PR DCO) ([8db0a5b](https://github.com/Ikalus1988/MisakaNet/commit/8db0a5b6828d2d90783cc21e92916519aac0e663)) * **ci:** add full workflow inventory docs/CI.md (audit T2.3) ([7ce5022](https://github.com/Ikalus1988/MisakaNet/commit/7ce5022394149debb173a63c98fdd1eb58e0e1f8)) * **codeql:** refresh config comments — advanced setup + paths-ignore rationale ([#68](https://github.com/Ikalus1988/MisakaNet/issues/68)) ([945e06e](https://github.com/Ikalus1988/MisakaNet/commit/945e06e712eb1c31ce916e35dc2ce450ac2f414c)) * crawler-intake-bot.md 10b (v1.0 record + limits). ([c7644cc](https://github.com/Ikalus1988/MisakaNet/commit/c7644cc2466f256f8e2321b99dcd78c903756557)) * DSH Directory badge + failure-knowledge benchmark swap + smoke guide ([#1546](https://github.com/Ikalus1988/MisakaNet/issues/1546)) ([bd53ee7](https://github.com/Ikalus1988/MisakaNet/commit/bd53ee774ab5ad16e97c0346307394f0eaca9281)) * **dsh:** clarify git+ requirement in description; add bundle contract tests (PR [#1484](https://github.com/Ikalus1988/MisakaNet/issues/1484) review) ([c007ac4](https://github.com/Ikalus1988/MisakaNet/commit/c007ac44fe3a8006442ff3e19fe734026fcaa5ad)) * **dsh:** npm vs git+ guidance + remote MCP example patch (B2-doc) ([049040c](https://github.com/Ikalus1988/MisakaNet/commit/049040c17689d0a073d418aa046a5fd43657497e)) * **dsh:** npm vs git+ guidance + remote MCP example patch (B2-doc) ([65bea53](https://github.com/Ikalus1988/MisakaNet/commit/65bea53a74bce85b59022ba3e5b11378f5451a19)) * encourage agents to use MCP intake ([#1430](https://github.com/Ikalus1988/MisakaNet/issues/1430)) ([cab150f](https://github.com/Ikalus1988/MisakaNet/commit/cab150ff3ebcbc8686241ed51cf00ea2a50ebe3d)) * **maintainer:** add 2026-09-03 handoff for dsh.so L5 fix + push ([f4f53ed](https://github.com/Ikalus1988/MisakaNet/commit/f4f53ed1503fe73afd45c8d3d3dca1237f2050eb)) * **maintainer:** add handoff-2026-09-05 (CodeQL zero, releases 2.27.x, bounty audit, rotation proof) ([10629da](https://github.com/Ikalus1988/MisakaNet/commit/10629da32e01f3c2e5c56f2b39baf8534b108d38)) * **maintainer:** DCO issue [#1498](https://github.com/Ikalus1988/MisakaNet/issues/1498) execution record + handoff 2026-09-06 ([0347a1d](https://github.com/Ikalus1988/MisakaNet/commit/0347a1d0179d69534018f7b898394c2accc8f583)) * **maintainer:** handoff 2026-09-05 audit-improvement round (PR [#1482](https://github.com/Ikalus1988/MisakaNet/issues/1482)) ([b1cdefe](https://github.com/Ikalus1988/MisakaNet/commit/b1cdefee70e055556a77e3e27119d36d5db79db4)) * **maintainer:** handoff 2026-09-06 Wave 2 — bot copy consistency + [#1430](https://github.com/Ikalus1988/MisakaNet/issues/1430) closeout ([7457a85](https://github.com/Ikalus1988/MisakaNet/commit/7457a857224b8a74b22997b697336dabbe5a2651)) * **maintainer:** handoff Wave 10 — intake-bot v1.0 ([#1539](https://github.com/Ikalus1988/MisakaNet/issues/1539) merged) ([742764a](https://github.com/Ikalus1988/MisakaNet/commit/742764a1a315018606bd9d1083710ea3f662557e)) * **maintainer:** handoff Wave 11 — dogfood v1.0 + [#1526](https://github.com/Ikalus1988/MisakaNet/issues/1526) server dedupe ([#1540](https://github.com/Ikalus1988/MisakaNet/issues/1540)) ([13ce86d](https://github.com/Ikalus1988/MisakaNet/commit/13ce86d7027c2b32ece292d15a15bb3cc8e0338b)) * **maintainer:** handoff Wave 12 — intake-bot decision benchmark ([#1543](https://github.com/Ikalus1988/MisakaNet/issues/1543)) ([dee0083](https://github.com/Ikalus1988/MisakaNet/commit/dee00833114cdc52d15e5f6c8edd6b2cfb5f60eb)) * **maintainer:** handoff Wave 14 — flywheel rollout + zero-bounty [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) ([b5ae7d8](https://github.com/Ikalus1988/MisakaNet/commit/b5ae7d817c3d06fc88b2bc30c39e4af298ad8fc5)) * **maintainer:** handoff Wave 15 — roof4u pilot + Origin 403 P0 + session backlog snapshot ([0cba01b](https://github.com/Ikalus1988/MisakaNet/commit/0cba01bc83b19706fb47a2421a37126c8b63bdbb)) * **maintainer:** handoff Wave 16 — [#1554](https://github.com/Ikalus1988/MisakaNet/issues/1554) merged (Origin/env P0 fixes) + regression + ci-search-visible v1.0.1 ([e2ab041](https://github.com/Ikalus1988/MisakaNet/commit/e2ab041918b40f02285c220ccd157c5971bf46e8)) * **maintainer:** handoff Wave 16b — [#1544](https://github.com/Ikalus1988/MisakaNet/issues/1544)/[#1528](https://github.com/Ikalus1988/MisakaNet/issues/1528) 暂缓决策落地记录 ([25da4af](https://github.com/Ikalus1988/MisakaNet/commit/25da4afb3f14675412108f376ad494dd1a9fe6a6)) * **maintainer:** handoff Wave 16c — [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) zero-bounty 纠错(0 金额,无结算) ([079340c](https://github.com/Ikalus1988/MisakaNet/commit/079340ce743bf659534ef9d96ccb81160d5948c6)) * **maintainer:** handoff Wave 16d — [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) 重开(20 位贡献者后关闭,防误关约定) ([e200be5](https://github.com/Ikalus1988/MisakaNet/commit/e200be5390b50616d00d1e99374be5c914c0e5e6)) * **maintainer:** handoff Wave 16e — pinned-issue 纠正([#1258](https://github.com/Ikalus1988/MisakaNet/issues/1258) 误关根因 + [#1550](https://github.com/Ikalus1988/MisakaNet/issues/1550) 置顶)+ Glama connector badge ([31e9223](https://github.com/Ikalus1988/MisakaNet/commit/31e92234e38421ce10be3cc0545d2efec713e812)) * **maintainer:** handoff Wave 16f — KV 分析拆 11 解耦 issue([#1562](https://github.com/Ikalus1988/MisakaNet/issues/1562)-1572) ([4b8a303](https://github.com/Ikalus1988/MisakaNet/commit/4b8a303308e50fbcd2575a4d4ac0ab4248b04b5f)) * **maintainer:** handoff Wave 16g — lesson 批次挂 bounty + 无赏金结算说明([#1568](https://github.com/Ikalus1988/MisakaNet/issues/1568)-1572) ([17c2c12](https://github.com/Ikalus1988/MisakaNet/commit/17c2c12696f85fa3899190f4b83bf6deed15d3aa)) * **maintainer:** handoff Wave 16h — 认领风暴审核:关 10 合 11([#1582](https://github.com/Ikalus1988/MisakaNet/issues/1582)-88 批) ([60bc640](https://github.com/Ikalus1988/MisakaNet/commit/60bc640e765c480717c3fdaa18fcf1571926600a)) * **maintainer:** handoff Wave 16i — Mr-Neutr0n ×3 合并 + 剩余队列状态 ([da42876](https://github.com/Ikalus1988/MisakaNet/commit/da42876c9b735cb9ddb89bd821263fd04763a447)) * **maintainer:** handoff Wave 16j — [#1566](https://github.com/Ikalus1988/MisakaNet/issues/1566) scope 修正关闭 + [#1562](https://github.com/Ikalus1988/MisakaNet/issues/1562) 根因 + CF errors 初查 ([67c6025](https://github.com/Ikalus1988/MisakaNet/commit/67c60251b1aecb8277c97638a8608ff1666ef0b3)) * **maintainer:** handoff Wave 16k — CF 225 errors 根因 + keepalive 降噪闭环([#1598](https://github.com/Ikalus1988/MisakaNet/issues/1598)) ([c30526e](https://github.com/Ikalus1988/MisakaNet/commit/c30526eb3b88660b04d9205b2ba01bf9cfe9cbe5)) * **maintainer:** handoff Wave 16l — CF OAuth 复盘 + 一键工具防再犯 ([d66b0f2](https://github.com/Ikalus1988/MisakaNet/commit/d66b0f28c8b7d09f347158cd452213c21be7797c)) * **maintainer:** handoff Wave 16m — 审核轮:合 6 关 5 issue([#1594](https://github.com/Ikalus1988/MisakaNet/issues/1594)-99 批) ([d44d71c](https://github.com/Ikalus1988/MisakaNet/commit/d44d71c952fa515fb2d5cc364e0e3984dfc21bae)) * **maintainer:** handoff Wave 16n — [#1538](https://github.com/Ikalus1988/MisakaNet/issues/1538) stale 关闭 + [#1527](https://github.com/Ikalus1988/MisakaNet/issues/1527) 重开认领 ([a06c28a](https://github.com/Ikalus1988/MisakaNet/commit/a06c28ad5833e49e154f84ec2043cb4f10c52721)) * **maintainer:** handoff Wave 16o — MCP structuredContent 修复 + 审核轮(合 4) ([9f601ed](https://github.com/Ikalus1988/MisakaNet/commit/9f601ed49db03301da134965d490b10717728deb)) * **maintainer:** handoff Wave 16q — release-please 诊断修复 + 反哺盘点 + issue 分类 ([70c2f93](https://github.com/Ikalus1988/MisakaNet/commit/70c2f9362e101ef37f9ab4bdeb8f0aa81b957b5f)) * **maintainer:** handoff Wave 16r — release-please 修复确认([#1608](https://github.com/Ikalus1988/MisakaNet/issues/1608) 2.29.0 PR 已生成) ([6ebc903](https://github.com/Ikalus1988/MisakaNet/commit/6ebc903ad8e65274b59bc0ca788341a485365ceb)) * **maintainer:** handoff Wave 16s — README badge 修复(Smithery pipeline + HOL 风格)+ HOL 报告要点 ([71c369d](https://github.com/Ikalus1988/MisakaNet/commit/71c369db9359a9aa6d2407eacf7cddafceabe5c8)) * **maintainer:** handoff Wave 16t — sharp 修复 + HOL scanner 接入 + 首轮 144 findings 分析 ([a612e7d](https://github.com/Ikalus1988/MisakaNet/commit/a612e7d5f00abe92f2878429cef9ec3622f70238)) * **maintainer:** handoff Wave 16u — codex manifest + 注入防护交付(路径 1+2) ([1a71338](https://github.com/Ikalus1988/MisakaNet/commit/1a71338549b68f638983e08ec6783c28c680d537)) * **maintainer:** handoff Wave 16v — L3 线上生效 + dsh.so 诊断 + 人工待办外置 ([528eaa6](https://github.com/Ikalus1988/MisakaNet/commit/528eaa6064a59c28003fb4507ad6ce4b69ef7f03)) * **maintainer:** handoff Wave 16w — L4 上线并线上验证(注入防护链闭环) ([586df69](https://github.com/Ikalus1988/MisakaNet/commit/586df69373002d010003ad0cb471ff0f7c907a84)) * **maintainer:** handoff Wave 16x — AGENTS.md 工程化 + L3 内容级标注([#1624](https://github.com/Ikalus1988/MisakaNet/issues/1624)) ([29b4309](https://github.com/Ikalus1988/MisakaNet/commit/29b43097bc7653f8b1c591b6099999a5cf4fd983)) * **maintainer:** handoff Wave 16y — AGENTS.md MCP 章节 + 第二篇 AAIF 文章 ([6a168d7](https://github.com/Ikalus1988/MisakaNet/commit/6a168d746e9ed4893ed1c2e74b1032acaffe8124)) * **maintainer:** handoff Wave 16z — AGENTS.md 分层精简(B 档) ([6a8a3f8](https://github.com/Ikalus1988/MisakaNet/commit/6a8a3f8625d22282d34b4c212ecc6bbdc15304ae)) * **maintainer:** handoff Wave 17 — 站点自动部署纠正 + leaderboard-watch 并发根因 ([71c773e](https://github.com/Ikalus1988/MisakaNet/commit/71c773e27620e7f8639e3cbecf7f1794db7ee029)) * **maintainer:** handoff Wave 17 §7 — signoff 误读事故与漏 bump 的版本线(含自我更正) ([2c1dbfc](https://github.com/Ikalus1988/MisakaNet/commit/2c1dbfc57aabc1de8b75bb7cd5770dc5959f8594)) * **maintainer:** handoff Wave 17 收尾 — 五个 PR 落地 + release 通道打通 ([07dc3fb](https://github.com/Ikalus1988/MisakaNet/commit/07dc3fbd63f9e887e8e6b862d319294ea9177f87)) * **maintainer:** handoff Wave 2 closeout — dsh bundle, v2.28.0, PR sweep, runbooks, open items ([0acf7b8](https://github.com/Ikalus1988/MisakaNet/commit/0acf7b8ebb3da03eacfe98490d611f2fcfac4080)) * **maintainer:** handoff Wave 3 — v2.28.0 tag, benchmark, registry-publish hold, intake review ([78599c7](https://github.com/Ikalus1988/MisakaNet/commit/78599c753976cd8e69fa306062e6ad97cb93a8d3)) * **maintainer:** handoff Wave 3 — zsxh triage: [#1400](https://github.com/Ikalus1988/MisakaNet/issues/1400) CI root cause, audit staleness, lesson gate duplicates ([c7f4488](https://github.com/Ikalus1988/MisakaNet/commit/c7f44886ae849e6756a7e2f5be8d1c0cf989c10e)) * **maintainer:** handoff Wave 4 — zsxh batch merges ([#1437](https://github.com/Ikalus1988/MisakaNet/issues/1437)/[#1461](https://github.com/Ikalus1988/MisakaNet/issues/1461)/[#1411](https://github.com/Ikalus1988/MisakaNet/issues/1411)), closes ([#1451](https://github.com/Ikalus1988/MisakaNet/issues/1451)/[#1452](https://github.com/Ikalus1988/MisakaNet/issues/1452)/[#1399](https://github.com/Ikalus1988/MisakaNet/issues/1399)), debt issue [#1506](https://github.com/Ikalus1988/MisakaNet/issues/1506) ([ac97141](https://github.com/Ikalus1988/MisakaNet/commit/ac97141528d497e91b6990469aec56ca1868d6f0)) * **maintainer:** handoff Wave 4b — [#1400](https://github.com/Ikalus1988/MisakaNet/issues/1400) merged, [#1505](https://github.com/Ikalus1988/MisakaNet/issues/1505) policy review posted ([4d622be](https://github.com/Ikalus1988/MisakaNet/commit/4d622bec515cf70f966c24073cafccde55ad2333)) * **maintainer:** handoff Wave 5 — zsxh feedback cleared ([#1400](https://github.com/Ikalus1988/MisakaNet/issues/1400)/1505/1507/1508 merged), policy revision note ([601bb31](https://github.com/Ikalus1988/MisakaNet/commit/601bb3113bb38abf0a21f6dc2eef577b3c034ab7)) * **maintainer:** handoff Wave 6 — [#1506](https://github.com/Ikalus1988/MisakaNet/issues/1506) gate differentiation ([#1509](https://github.com/Ikalus1988/MisakaNet/issues/1509)), quality-gate regression hotfix ([#1510](https://github.com/Ikalus1988/MisakaNet/issues/1510)) ([973b7fc](https://github.com/Ikalus1988/MisakaNet/commit/973b7fc5c50439b1a01a897faf4f1c2c2a7ead1d)) * **maintainer:** handoff Wave 9 — intake-bot closed loop ([#1524](https://github.com/Ikalus1988/MisakaNet/issues/1524)/[#1525](https://github.com/Ikalus1988/MisakaNet/issues/1525) delivered), queue sweep ([#1493](https://github.com/Ikalus1988/MisakaNet/issues/1493)/[#1494](https://github.com/Ikalus1988/MisakaNet/issues/1494) delivered) ([b9c115d](https://github.com/Ikalus1988/MisakaNet/commit/b9c115d6896fbdd47bd66e52958c1ecfecdc0737)) * **maintainer:** handoff Wave 9b — [#1514](https://github.com/Ikalus1988/MisakaNet/issues/1514) closed dup, [#1526](https://github.com/Ikalus1988/MisakaNet/issues/1526)-1528 bounty-labeled ([8c97947](https://github.com/Ikalus1988/MisakaNet/commit/8c9794783c9aac4e00db23490f57efc61319f01a)) * **maintainer:** handoff Wave 9c — closed 9 delivered/placeholder issues ([dd0a5af](https://github.com/Ikalus1988/MisakaNet/commit/dd0a5af0d1a6b12f732a9be93908be6fdaf955d9)) * **maintainer:** handoff Wave 9d — [#1221](https://github.com/Ikalus1988/MisakaNet/issues/1221) mis-close corrected (AC not met by [#1522](https://github.com/Ikalus1988/MisakaNet/issues/1522)) ([87e99be](https://github.com/Ikalus1988/MisakaNet/commit/87e99beff943f01d1fef653bdd58b5d4cea8f9cf)) * **maintainer:** handoff Wave 9e — close [#1221](https://github.com/Ikalus1988/MisakaNet/issues/1221)/[#818](https://github.com/Ikalus1988/MisakaNet/issues/818) (social posting not agent-feasible) ([f541963](https://github.com/Ikalus1988/MisakaNet/commit/f5419634ce4765e23727984035ea51ad4ac1b736)) * **maintainer:** handoff Wave 9f — PR triage: dependabot x4 merged, [#1443](https://github.com/Ikalus1988/MisakaNet/issues/1443) superseded, [#1513](https://github.com/Ikalus1988/MisakaNet/issues/1513)/[#1412](https://github.com/Ikalus1988/MisakaNet/issues/1412)-15 nudged ([82d8d01](https://github.com/Ikalus1988/MisakaNet/commit/82d8d01f0c6dc078b81cf558725bad8a1e4d515f)) * **maintainer:** handoff Wave 9g — first-contributor UX ([#1537](https://github.com/Ikalus1988/MisakaNet/issues/1537) merged) ([81819a9](https://github.com/Ikalus1988/MisakaNet/commit/81819a98cad966bd6a0ef911c8c9c29df6526d13)) * **maintainer:** handoff-2026-09-03 §10 — pull-based answer delivery live-verified ([98fc23e](https://github.com/Ikalus1988/MisakaNet/commit/98fc23e1b71d9abb3dbb319deb491c8b4493fbf4)) * **maintainer:** handoff-2026-09-03 §11 — full-chain smoke (question→answer→lesson) + HOL badge ([1f6ce8b](https://github.com/Ikalus1988/MisakaNet/commit/1f6ce8b8accdd60c55202830a0b55d241d08a313)) * **maintainer:** handoff-2026-09-03 §12 — Glama TDQS pass (annotations/outputSchema/requiredness) deployed + live-verified ([200ab80](https://github.com/Ikalus1988/MisakaNet/commit/200ab8029ddd639f5bd422c8bd31a5023d00f3dd)) * **maintainer:** handoff-2026-09-03 §13 — goal round: review-fix, release v2.24.0, rotation issues, PR triage ([711870f](https://github.com/Ikalus1988/MisakaNet/commit/711870f124f3066aa327b8ebb7fdd8afe638e189)) * **maintainer:** handoff-2026-09-03 §14 — goal round 2: v2.25.0/v2.26.0, PR audit terminal ([52af252](https://github.com/Ikalus1988/MisakaNet/commit/52af252e649ed845401bfefaebd1b23a6a6fd323)) * **maintainer:** handoff-2026-09-03 §2 — intake question routing fix (remote 0e6e4f3f) + [#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396) reclassified as question ([64073f4](https://github.com/Ikalus1988/MisakaNet/commit/64073f4feb42a650a88d88df243356bdd9c766d9)) * **maintainer:** handoff-2026-09-03 §2 — intake question routing fix (remote 0e6e4f3f) + [#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396) reclassified as question ([8d96c6d](https://github.com/Ikalus1988/MisakaNet/commit/8d96c6de5f86cce701cdf4b8ef6ab34ae935f36e)) * **maintainer:** handoff-2026-09-03 §4 — historical question-vs-lesson audit + regression tests ([ae53383](https://github.com/Ikalus1988/MisakaNet/commit/ae53383162477acc7498bda008393ec13c230ffa)) * **maintainer:** handoff-2026-09-03 §5 — intake_pipeline question fix + queue hygiene ([41f042a](https://github.com/Ikalus1988/MisakaNet/commit/41f042a3df9d7f77af9335c8245d0474a95b39fe)) * **maintainer:** handoff-2026-09-03 §6 — cron kind audit + PRD ⑤ question-answer loop ([ef0f4e8](https://github.com/Ikalus1988/MisakaNet/commit/ef0f4e88883f3e1dea13c36bd2a1a1dfbdcdfcca)) * **maintainer:** handoff-2026-09-03 §7 — end-to-end test pass (live MCP auto-routing verified via issue-1450) ([3df83b6](https://github.com/Ikalus1988/MisakaNet/commit/3df83b6ed072ef95d9f67325bcb64d48a69d45f3)) * **maintainer:** handoff-2026-09-03 §8 — PRD ⑤ pilot + release-please two-layer diagnosis ([6dd85e6](https://github.com/Ikalus1988/MisakaNet/commit/6dd85e6a7b3653668d3e5c982a36f08711130780)) * **maintainer:** handoff-2026-09-03 §9 — release-please verified working; release PR [#1453](https://github.com/Ikalus1988/MisakaNet/issues/1453) (v2.24.0) open ([1a8fa50](https://github.com/Ikalus1988/MisakaNet/commit/1a8fa5041ded0e1e2cdfe215090a7c4800f849c8)) * **maintainer:** intake triage SOP — mandatory reporter receipt/thanks ([#1605](https://github.com/Ikalus1988/MisakaNet/issues/1605) lesson) ([3d52c7a](https://github.com/Ikalus1988/MisakaNet/commit/3d52c7a0b18ab436976bcef69692f66891731e1f)) * **maintenance:** dependabot local-audit findings + fix playbook (2 crit / 2 high pending details) ([aceca4d](https://github.com/Ikalus1988/MisakaNet/commit/aceca4d3272c5abb665a17f1f32a61f55e892aeb)) * **maintenance:** MCP directory matrix incl MCPVault claim/verify path (§10) ([b473f2f](https://github.com/Ikalus1988/MisakaNet/commit/b473f2f3e1e8232dda494b778ad3c1de7bc1d6ca)) * **maintenance:** note test_dsh_bundle.py provenance (PR [#1484](https://github.com/Ikalus1988/MisakaNet/issues/1484)) — review clarification ([f91bf9a](https://github.com/Ikalus1988/MisakaNet/commit/f91bf9a994eee23bf551069dab1a9fc06b5de03d)) * **maintenance:** release-prep checklist + MCP registry/dsh.so runbook (§8-9) ([ba77cdb](https://github.com/Ikalus1988/MisakaNet/commit/ba77cdb66db39a53d879644052f41624b780dfcb)) * **maintenance:** review record — lesson PR vs intake auto-issue pattern (§11) ([5c9506e](https://github.com/Ikalus1988/MisakaNet/commit/5c9506e4b8a35b8309a9870b5765c3440756492f)) * **maintenance:** scripts naming policy, archive triage, regenerable-data guide (audit T3.1/3.2/3.4) ([998aaca](https://github.com/Ikalus1988/MisakaNet/commit/998aacaf873e40f66bd4dafe99c14ae682e42137)) * **mcp:** crawler-friendly MCP intake guide ([#1071](https://github.com/Ikalus1988/MisakaNet/issues/1071)) ([#1449](https://github.com/Ikalus1988/MisakaNet/issues/1449)) ([2a442e6](https://github.com/Ikalus1988/MisakaNet/commit/2a442e6596fce9adb0ea61ac155cce0038064c84)) * **plugin:** index.js comment now matches the current dsh bundle declaration ([9f85cfa](https://github.com/Ikalus1988/MisakaNet/commit/9f85cfaed159d398851dca5e0c02389dcdd9e60e)) * **prd:** PRD ⑤ §9 — competitor research on answer delivery (casebook/claimidx/unstuck/knoten/sentinela/kira/hitl) ([d388d91](https://github.com/Ikalus1988/MisakaNet/commit/d388d91e89c4a94ba948fc049e6c96620db350cf)) * **prd:** PRD ⑤ path A pilot — [#1362](https://github.com/Ikalus1988/MisakaNet/issues/1362)/[#1364](https://github.com/Ikalus1988/MisakaNet/issues/1364) answered + closed with 'answered' label ([618feca](https://github.com/Ikalus1988/MisakaNet/commit/618fecae2c6f86965f0f9116aa3c116b65640501)) * **promotional:** AAIF blog submission [#2](https://github.com/Ikalus1988/MisakaNet/issues/2) — indexing failures, with fact sources ([3d94dcd](https://github.com/Ikalus1988/MisakaNet/commit/3d94dcdb063ac5b0f415c2819a7a9bc967fbfdee)) * **promotional:** AAIF blog submission package (failure memory layer, MCP + AGENTS.md) ([340e95c](https://github.com/Ikalus1988/MisakaNet/commit/340e95c91876f8c50aca87d10fa7d6332d4fd485)) * **readme:** add Glama MCP connector badge (tool definition quality + endpoint health) ([8665dd1](https://github.com/Ikalus1988/MisakaNet/commit/8665dd12ff989f8fe19bc80b7e70c7a831199839)) * **readme:** add HOL Registry badge to Ecosystem group ([09c57f1](https://github.com/Ikalus1988/MisakaNet/commit/09c57f1990b5ea12ee4bdabf2991116acdf1bd8f)) * refresh LIMITATIONS for two-surface architecture + add DeepWiki review lesson ([a4a3ee0](https://github.com/Ikalus1988/MisakaNet/commit/a4a3ee0356afbb9e09124c73d98f6a349ed5edad)) * registry 2.28.1 published — maintenance §8-10 status refresh + handoff Wave 7 ([4f59300](https://github.com/Ikalus1988/MisakaNet/commit/4f593008bc7a9f6fe614ff1afc2f67fde63a2543)) * star CTA + i18n audit + search blind test ([08c0517](https://github.com/Ikalus1988/MisakaNet/commit/08c05172d9695178b248d94a0abb8abff1fe5dd0)) * star CTA in footer + llms.txt, i18n language audit report ([e65ebc4](https://github.com/Ikalus1988/MisakaNet/commit/e65ebc4e8050fb8211d3c9b51c97782b59b522c9)) ### Refactoring * **cli:** extract heal/diagnose mode into misakanet/cli/heal.py (audit T1.1 stage 1) ([4dff6a3](https://github.com/Ikalus1988/MisakaNet/commit/4dff6a324b5b23d58e4210dc1f2ae2479000b14a)) * **cli:** extract remote/typo/graphql/harvest modes into misakanet/cli (audit T1.1 stage 2-4) ([5b2accd](https://github.com/Ikalus1988/MisakaNet/commit/5b2accdc83eec81dc2b4415b5133ccae582fa849)) ### Tests * add 50-sample test suite for intake_bot.py ([b34b795](https://github.com/Ikalus1988/MisakaNet/commit/b34b795f39b334c4dca6cfed685ec7b756dbb053)) * add unit tests for sync_answered_questions.py ([#1464](https://github.com/Ikalus1988/MisakaNet/issues/1464)) ([#1485](https://github.com/Ikalus1988/MisakaNet/issues/1485)) ([0f2b985](https://github.com/Ikalus1988/MisakaNet/commit/0f2b98580f01144cd9cac23825250a60ac748815)) * **audit:** historical question-vs-lesson discrimination regression ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([c7f1575](https://github.com/Ikalus1988/MisakaNet/commit/c7f15754b6d9feca899103c1a528107f243510a6)) * **audit:** historical question-vs-lesson discrimination regression ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([1ab0434](https://github.com/Ikalus1988/MisakaNet/commit/1ab043441af6bdc52de2b424d80b2102d67d8a61)) * **ci:** add version-consistency safety net (audit T0.1) ([320db69](https://github.com/Ikalus1988/MisakaNet/commit/320db69605dee4c9e50723a04704d993d3dcb32d)) * **e2e:** add MCP pipeline E2E tests for intake, search, CLI ([#1400](https://github.com/Ikalus1988/MisakaNet/issues/1400)) ([2574167](https://github.com/Ikalus1988/MisakaNet/commit/2574167a178e1dc12b37f87c0c21e6c3811f6bfb)), closes [#1359](https://github.com/Ikalus1988/MisakaNet/issues/1359) [#1360](https://github.com/Ikalus1988/MisakaNet/issues/1360) [#1361](https://github.com/Ikalus1988/MisakaNet/issues/1361) * **fatal-guard:** runhandler env test — handler receives environment ([#1412](https://github.com/Ikalus1988/MisakaNet/issues/1412)) ([01bc023](https://github.com/Ikalus1988/MisakaNet/commit/01bc023c39c0b8cbb9e1dbd2ebfbe7d1fed174ae)) * **intake:** intake pipeline backfill tests ([#1370](https://github.com/Ikalus1988/MisakaNet/issues/1370)) ([#1447](https://github.com/Ikalus1988/MisakaNet/issues/1447)) ([e657b9a](https://github.com/Ikalus1988/MisakaNet/commit/e657b9ab8ff961feb1a9b7c9a8b9aedae6abf16e)) * **intake:** statistical evaluation with 100 stratified samples ([#1603](https://github.com/Ikalus1988/MisakaNet/issues/1603)) ([b8a9b0e](https://github.com/Ikalus1988/MisakaNet/commit/b8a9b0e24a30cdaf5bd8fa605f3f25a5754a1682)) * **mcp:** cover registered Bearer-token lesson submissions ([#1293](https://github.com/Ikalus1988/MisakaNet/issues/1293)) ([2b71b47](https://github.com/Ikalus1988/MisakaNet/commit/2b71b4726d6379313a93b0d631ae2aeec1752df4)) ### CI/CD * add HOL Guard Guarded Repository scan ([#1611](https://github.com/Ikalus1988/MisakaNet/issues/1611)) ([443ec2b](https://github.com/Ikalus1988/MisakaNet/commit/443ec2b4378c857d911bb4f8b13131f2c525127b)) * auto-reopen protected long-running issues ([#1607](https://github.com/Ikalus1988/MisakaNet/issues/1607)) ([d22c3f4](https://github.com/Ikalus1988/MisakaNet/commit/d22c3f4e2ae798787d321700e0c18d7d5a58240c)) * **codeql:** advanced setup with custom config (route B for [#68](https://github.com/Ikalus1988/MisakaNet/issues/68)) ([4cdd704](https://github.com/Ikalus1988/MisakaNet/commit/4cdd704a3ac62bb54f9482dcc414268f1516289a)) * **deploy:** gate worker deploys on placeholder-free config (audit T1.5) ([230822f](https://github.com/Ikalus1988/MisakaNet/commit/230822fc1e1b2453ed45f02a42d89212f0f5981c)) * **pypi:** add workflow_dispatch to release-pypi (unblocks 2.28.0 publish) ([#1511](https://github.com/Ikalus1988/MisakaNet/issues/1511)) ([5608132](https://github.com/Ikalus1988/MisakaNet/commit/560813237006073f0fb099d822058089526faea4)) ## [2.28.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.27.1...v2.28.0) (2026-09-05) ### Features * **dsh:** declare dsh.bundle — register stdio MCP server as mcp__mis… ([51e3da7](https://github.com/Ikalus1988/MisakaNet/commit/51e3da7755f9512bf65fe20d6296e18a4b322ef3)) * **dsh:** declare dsh.bundle — register stdio MCP server as mcp__misakanet__* (B1) ([51cf15a](https://github.com/Ikalus1988/MisakaNet/commit/51cf15a1fbbd30211ce28c8b7e938767e86b25ad)) * **ops:** --registry also bumps server.json pypi entry (R3 stays satisfied post-release) ([2c4e2d4](https://github.com/Ikalus1988/MisakaNet/commit/2c4e2d4df9b3e2dca5cc35b0874d0ac023455350)) * **ops:** add make doctor pre-flight checks for deploy readiness (audit QW3/T0.2) ([42c9c9a](https://github.com/Ikalus1988/MisakaNet/commit/42c9c9a3b8206bb8e310df38c779b533003504e5)) * **ops:** single version-alignment tool + explicit channel policy (audit T2.1) ([8089018](https://github.com/Ikalus1988/MisakaNet/commit/80890185ec32f425fbf5b0ff3d1c9259677e6b01)) * **search:** align D1 and all index consumers with canonical_lessons (T2.5) ([5bf023f](https://github.com/Ikalus1988/MisakaNet/commit/5bf023f759192abb6773101b36109d20ee021b7e)) * **search:** auto-discover all lesson directories (audit T2.2, library policy) ([3dc4c59](https://github.com/Ikalus1988/MisakaNet/commit/3dc4c5993f34fbaaba2736b05bb878fe022773e5)) * **search:** dedupe visible index by stem — mirrors dropped (audit T2.5) ([23eb4ef](https://github.com/Ikalus1988/MisakaNet/commit/23eb4ef038cc9b06dad53d760701ff71e50db6ca)) ### Bug Fixes * **cli:** make search_knowledge --heal dry-run by default (audit QW5) ([cd9bf44](https://github.com/Ikalus1988/MisakaNet/commit/cd9bf4476a01a20aadb30880a36cf295276863bd)) * **deps:** remove vulnerable chromadb from hub extras (closes 4 dependabot alerts) ([cdae753](https://github.com/Ikalus1988/MisakaNet/commit/cdae7533dd07f95d18774077799de9be6c16931f)) * **ops:** align pypi entry to release line; npm-bundle lag policy (merged-main reality) ([89c35ac](https://github.com/Ikalus1988/MisakaNet/commit/89c35ac8d78f293d47077ba51c03a185321150af)) * **quality:** don't flag TODO fill-ins in draft/template lessons (audit T3.3) ([aeb5c50](https://github.com/Ikalus1988/MisakaNet/commit/aeb5c500eaf5616e210558d767cd2a6b35233bba)) * **registry:** server.json description within official schema maxLength 100 ([c432564](https://github.com/Ikalus1988/MisakaNet/commit/c432564367e1a8bd054026c540cda5de3c31c7b3)) * **search:** address PR [#1482](https://github.com/Ikalus1988/MisakaNet/issues/1482) review — facade corpus refresh, robust telemetry, narrowed TODO tolerance ([7cf63ec](https://github.com/Ikalus1988/MisakaNet/commit/7cf63eca56986a173b5b7763995c2c50dfe74ab7)) * **search:** restore working BM25 facade for MCP/HTTP servers (audit QW4) ([0d26c9a](https://github.com/Ikalus1988/MisakaNet/commit/0d26c9a7c2592841177a5751e61c7e55f153ee0b)) ### Documentation * **ci:** add full workflow inventory docs/CI.md (audit T2.3) ([7ce5022](https://github.com/Ikalus1988/MisakaNet/commit/7ce5022394149debb173a63c98fdd1eb58e0e1f8)) * **dsh:** clarify git+ requirement in description; add bundle contract tests (PR [#1484](https://github.com/Ikalus1988/MisakaNet/issues/1484) review) ([c007ac4](https://github.com/Ikalus1988/MisakaNet/commit/c007ac44fe3a8006442ff3e19fe734026fcaa5ad)) * **dsh:** npm vs git+ guidance + remote MCP example patch (B2-doc) ([049040c](https://github.com/Ikalus1988/MisakaNet/commit/049040c17689d0a073d418aa046a5fd43657497e)) * **dsh:** npm vs git+ guidance + remote MCP example patch (B2-doc) ([65bea53](https://github.com/Ikalus1988/MisakaNet/commit/65bea53a74bce85b59022ba3e5b11378f5451a19)) * **maintainer:** add handoff-2026-09-05 (CodeQL zero, releases 2.27.x, bounty audit, rotation proof) ([10629da](https://github.com/Ikalus1988/MisakaNet/commit/10629da32e01f3c2e5c56f2b39baf8534b108d38)) * **maintainer:** handoff 2026-09-05 audit-improvement round (PR [#1482](https://github.com/Ikalus1988/MisakaNet/issues/1482)) ([b1cdefe](https://github.com/Ikalus1988/MisakaNet/commit/b1cdefee70e055556a77e3e27119d36d5db79db4)) * **maintenance:** dependabot local-audit findings + fix playbook (2 crit / 2 high pending details) ([aceca4d](https://github.com/Ikalus1988/MisakaNet/commit/aceca4d3272c5abb665a17f1f32a61f55e892aeb)) * **maintenance:** note test_dsh_bundle.py provenance (PR [#1484](https://github.com/Ikalus1988/MisakaNet/issues/1484)) — review clarification ([f91bf9a](https://github.com/Ikalus1988/MisakaNet/commit/f91bf9a994eee23bf551069dab1a9fc06b5de03d)) * **maintenance:** release-prep checklist + MCP registry/dsh.so runbook (§8-9) ([ba77cdb](https://github.com/Ikalus1988/MisakaNet/commit/ba77cdb66db39a53d879644052f41624b780dfcb)) * **maintenance:** scripts naming policy, archive triage, regenerable-data guide (audit T3.1/3.2/3.4) ([998aaca](https://github.com/Ikalus1988/MisakaNet/commit/998aacaf873e40f66bd4dafe99c14ae682e42137)) ### Refactoring * **cli:** extract heal/diagnose mode into misakanet/cli/heal.py (audit T1.1 stage 1) ([4dff6a3](https://github.com/Ikalus1988/MisakaNet/commit/4dff6a324b5b23d58e4210dc1f2ae2479000b14a)) * **cli:** extract remote/typo/graphql/harvest modes into misakanet/cli (audit T1.1 stage 2-4) ([5b2accd](https://github.com/Ikalus1988/MisakaNet/commit/5b2accdc83eec81dc2b4415b5133ccae582fa849)) ### Tests * **ci:** add version-consistency safety net (audit T0.1) ([320db69](https://github.com/Ikalus1988/MisakaNet/commit/320db69605dee4c9e50723a04704d993d3dcb32d)) ### CI/CD * **deploy:** gate worker deploys on placeholder-free config (audit T1.5) ([230822f](https://github.com/Ikalus1988/MisakaNet/commit/230822fc1e1b2453ed45f02a42d89212f0f5981c)) ## [2.27.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.27.0...v2.27.1) (2026-09-05) ### Bug Fixes * **mcp:** migrate HTTP server to SDK v2 ([#1478](https://github.com/Ikalus1988/MisakaNet/issues/1478)) ([019ad73](https://github.com/Ikalus1988/MisakaNet/commit/019ad733a769330577e7a3319bc07bb96035805e)) ### Tests * **mcp:** cover registered Bearer-token lesson submissions ([#1293](https://github.com/Ikalus1988/MisakaNet/issues/1293)) ([2b71b47](https://github.com/Ikalus1988/MisakaNet/commit/2b71b4726d6379313a93b0d631ae2aeec1752df4)) ## [2.27.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.26.0...v2.27.0) (2026-09-04) ### Features * **ops:** add event-driven sync for answered questions ([#1462](https://github.com/Ikalus1988/MisakaNet/issues/1462)) ([c92e146](https://github.com/Ikalus1988/MisakaNet/commit/c92e146a5135d71b26a374793f4da9a29ca10bb4)) * **ops:** trigger sync_answered_questions.py on answered label/close ([ecc68ff](https://github.com/Ikalus1988/MisakaNet/commit/ecc68ffadd67e312b3e4846e19036c2bbce63549)) ### Bug Fixes * **codeql #69:** dsh install test — replace shell cp -r with fs.cpSync ([dcb9e0b](https://github.com/Ikalus1988/MisakaNet/commit/dcb9e0b80c21302ec09ea3d9b5714dbc88314f8b)) * **codeql:** [#68](https://github.com/Ikalus1988/MisakaNet/issues/68) paths-ignore + tmp-file fixes ([#70](https://github.com/Ikalus1988/MisakaNet/issues/70)/[#77](https://github.com/Ikalus1988/MisakaNet/issues/77)-79) ([c2928e7](https://github.com/Ikalus1988/MisakaNet/commit/c2928e714ce6fe7986761350cc07a04085669ae1)) ### Documentation * **codeql:** refresh config comments — advanced setup + paths-ignore rationale ([#68](https://github.com/Ikalus1988/MisakaNet/issues/68)) ([945e06e](https://github.com/Ikalus1988/MisakaNet/commit/945e06e712eb1c31ce916e35dc2ce450ac2f414c)) * **maintainer:** handoff-2026-09-03 §14 — goal round 2: v2.25.0/v2.26.0, PR audit terminal ([52af252](https://github.com/Ikalus1988/MisakaNet/commit/52af252e649ed845401bfefaebd1b23a6a6fd323)) ### CI/CD * **codeql:** advanced setup with custom config (route B for [#68](https://github.com/Ikalus1988/MisakaNet/issues/68)) ([4cdd704](https://github.com/Ikalus1988/MisakaNet/commit/4cdd704a3ac62bb54f9482dcc414268f1516289a)) ## [2.26.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.25.0...v2.26.0) (2026-09-03) ### Features * **lesson:** evidence_refs frontmatter support ([#1439](https://github.com/Ikalus1988/MisakaNet/issues/1439)) ([#1456](https://github.com/Ikalus1988/MisakaNet/issues/1456)) ([7139cff](https://github.com/Ikalus1988/MisakaNet/commit/7139cff229445169083880e1fd916c4c2231b9da)) ## [2.25.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.24.0...v2.25.0) (2026-09-03) ### Features * **faithfulness:** RAGAS-style lesson usage evaluator ([#1162](https://github.com/Ikalus1988/MisakaNet/issues/1162)) ([#1448](https://github.com/Ikalus1988/MisakaNet/issues/1448)) ([9b49840](https://github.com/Ikalus1988/MisakaNet/commit/9b498401ad60b97821182cd7f3a460279fb1318b)) ### Bug Fixes * **ci:** strip code blocks in lesson security scan + pr-genius sys import ([#1445](https://github.com/Ikalus1988/MisakaNet/issues/1445)) ([75b90fb](https://github.com/Ikalus1988/MisakaNet/commit/75b90fb5340875fb01d463fc1468077460eea18a)) ### Documentation * **maintainer:** handoff-2026-09-03 §13 — goal round: review-fix, release v2.24.0, rotation issues, PR triage ([711870f](https://github.com/Ikalus1988/MisakaNet/commit/711870f124f3066aa327b8ebb7fdd8afe638e189)) * **mcp:** crawler-friendly MCP intake guide ([#1071](https://github.com/Ikalus1988/MisakaNet/issues/1071)) ([#1449](https://github.com/Ikalus1988/MisakaNet/issues/1449)) ([2a442e6](https://github.com/Ikalus1988/MisakaNet/commit/2a442e6596fce9adb0ea61ac155cce0038064c84)) ### Tests * **intake:** intake pipeline backfill tests ([#1370](https://github.com/Ikalus1988/MisakaNet/issues/1370)) ([#1447](https://github.com/Ikalus1988/MisakaNet/issues/1447)) ([e657b9a](https://github.com/Ikalus1988/MisakaNet/commit/e657b9ab8ff961feb1a9b7c9a8b9aedae6abf16e)) ## [2.24.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.23.1...v2.24.0) (2026-09-03) ### Features * **intake:** weekly kind-audit workflow + question-answer-loop PRD ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([9475852](https://github.com/Ikalus1988/MisakaNet/commit/9475852587af95983ee110858255c0cde2540568)) * **mcp:** question routing at intake entries — kind auto-detect + no-match split ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([27f65f6](https://github.com/Ikalus1988/MisakaNet/commit/27f65f6bf3c24c26d08992a12207d26bfa42e953)) * **mcp:** TDQS pass — annotations + outputSchema on all 7 tools, requiredness clarity ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)/Glama review) ([bd241b1](https://github.com/Ikalus1988/MisakaNet/commit/bd241b1e4444884b76502be8dc6c397f7d1a0f20)) * **prd5:** pull-based answer delivery — D1 questions store + FAQ search hits ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([1c92a3b](https://github.com/Ikalus1988/MisakaNet/commit/1c92a3b3beedba29be90a8ed1d6434d48d32fb9b)) ### Bug Fixes * **ci:** route question-kind intakes away from lesson auto-review ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([0e6e4f3](https://github.com/Ikalus1988/MisakaNet/commit/0e6e4f3f735529a1cc2435a7b668533616837a29)) * **intake:** question kind never mints a lesson draft ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([6bd9c1c](https://github.com/Ikalus1988/MisakaNet/commit/6bd9c1c67e6883e083cd97a0ae1f2b3f697ae5e4)) * **review:** P0 dedup trim parity + P1 FAQ progressive disclosure; dual-axis review doc ([ed96887](https://github.com/Ikalus1988/MisakaNet/commit/ed9688769a2cc8cde29184e4efddd28590156294)) ### Documentation * **maintainer:** add 2026-09-03 handoff for dsh.so L5 fix + push ([f4f53ed](https://github.com/Ikalus1988/MisakaNet/commit/f4f53ed1503fe73afd45c8d3d3dca1237f2050eb)) * **maintainer:** handoff-2026-09-03 §10 — pull-based answer delivery live-verified ([98fc23e](https://github.com/Ikalus1988/MisakaNet/commit/98fc23e1b71d9abb3dbb319deb491c8b4493fbf4)) * **maintainer:** handoff-2026-09-03 §11 — full-chain smoke (question→answer→lesson) + HOL badge ([1f6ce8b](https://github.com/Ikalus1988/MisakaNet/commit/1f6ce8b8accdd60c55202830a0b55d241d08a313)) * **maintainer:** handoff-2026-09-03 §12 — Glama TDQS pass (annotations/outputSchema/requiredness) deployed + live-verified ([200ab80](https://github.com/Ikalus1988/MisakaNet/commit/200ab8029ddd639f5bd422c8bd31a5023d00f3dd)) * **maintainer:** handoff-2026-09-03 §2 — intake question routing fix (remote 0e6e4f3f) + [#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396) reclassified as question ([64073f4](https://github.com/Ikalus1988/MisakaNet/commit/64073f4feb42a650a88d88df243356bdd9c766d9)) * **maintainer:** handoff-2026-09-03 §2 — intake question routing fix (remote 0e6e4f3f) + [#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396) reclassified as question ([8d96c6d](https://github.com/Ikalus1988/MisakaNet/commit/8d96c6de5f86cce701cdf4b8ef6ab34ae935f36e)) * **maintainer:** handoff-2026-09-03 §4 — historical question-vs-lesson audit + regression tests ([ae53383](https://github.com/Ikalus1988/MisakaNet/commit/ae53383162477acc7498bda008393ec13c230ffa)) * **maintainer:** handoff-2026-09-03 §5 — intake_pipeline question fix + queue hygiene ([41f042a](https://github.com/Ikalus1988/MisakaNet/commit/41f042a3df9d7f77af9335c8245d0474a95b39fe)) * **maintainer:** handoff-2026-09-03 §6 — cron kind audit + PRD ⑤ question-answer loop ([ef0f4e8](https://github.com/Ikalus1988/MisakaNet/commit/ef0f4e88883f3e1dea13c36bd2a1a1dfbdcdfcca)) * **maintainer:** handoff-2026-09-03 §7 — end-to-end test pass (live MCP auto-routing verified via issue-1450) ([3df83b6](https://github.com/Ikalus1988/MisakaNet/commit/3df83b6ed072ef95d9f67325bcb64d48a69d45f3)) * **maintainer:** handoff-2026-09-03 §8 — PRD ⑤ pilot + release-please two-layer diagnosis ([6dd85e6](https://github.com/Ikalus1988/MisakaNet/commit/6dd85e6a7b3653668d3e5c982a36f08711130780)) * **maintainer:** handoff-2026-09-03 §9 — release-please verified working; release PR [#1453](https://github.com/Ikalus1988/MisakaNet/issues/1453) (v2.24.0) open ([1a8fa50](https://github.com/Ikalus1988/MisakaNet/commit/1a8fa5041ded0e1e2cdfe215090a7c4800f849c8)) * **prd:** PRD ⑤ §9 — competitor research on answer delivery (casebook/claimidx/unstuck/knoten/sentinela/kira/hitl) ([d388d91](https://github.com/Ikalus1988/MisakaNet/commit/d388d91e89c4a94ba948fc049e6c96620db350cf)) * **prd:** PRD ⑤ path A pilot — [#1362](https://github.com/Ikalus1988/MisakaNet/issues/1362)/[#1364](https://github.com/Ikalus1988/MisakaNet/issues/1364) answered + closed with 'answered' label ([618feca](https://github.com/Ikalus1988/MisakaNet/commit/618fecae2c6f86965f0f9116aa3c116b65640501)) * **readme:** add HOL Registry badge to Ecosystem group ([09c57f1](https://github.com/Ikalus1988/MisakaNet/commit/09c57f1990b5ea12ee4bdabf2991116acdf1bd8f)) ### Tests * **audit:** historical question-vs-lesson discrimination regression ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([c7f1575](https://github.com/Ikalus1988/MisakaNet/commit/c7f15754b6d9feca899103c1a528107f243510a6)) * **audit:** historical question-vs-lesson discrimination regression ([#1396](https://github.com/Ikalus1988/MisakaNet/issues/1396)) ([1ab0434](https://github.com/Ikalus1988/MisakaNet/commit/1ab043441af6bdc52de2b424d80b2102d67d8a61)) ## [2.23.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.22.0...v2.23.0) (2026-08-28) ### Features * **benchmark:** Workers AI lesson benchmark script (cloudflare.ai/playground automation) ([0f60bcf](https://github.com/Ikalus1988/MisakaNet/commit/0f60bcf1af7f8ac2f69528db6f08ef58ca34af3f)) * **benchmark:** Workers AI lesson benchmark with RAG compare + weekly CI ([7075966](https://github.com/Ikalus1988/MisakaNet/commit/7075966b792aa1f9d5bbf77679d09e52c0acf3f7)) * **lessons:** add 3 lessons from intake submissions ([24e6705](https://github.com/Ikalus1988/MisakaNet/commit/24e6705a2f660591ef36215149ac2ceb5a7331cf)) * **lessons:** add asyncio CancelledError lesson (from [#1298](https://github.com/Ikalus1988/MisakaNet/issues/1298)) ([847ca36](https://github.com/Ikalus1988/MisakaNet/commit/847ca363da07d9123d18436c27a4fe4e1109e947)) ### Bug Fixes * **benchmark:** auto-create output dir (docs/benchmarks) ([7d41042](https://github.com/Ikalus1988/MisakaNet/commit/7d410429e9ae35e4705d49ceaa606462acd10d98)) * **ci:** rebase before push in benchmark report step (handle concurrent commits) ([e7bd6bc](https://github.com/Ikalus1988/MisakaNet/commit/e7bd6bc45aa1b4c583bf951fdf5e30e552ee42dd)) * **lessons:** add verification output to 4 files + upgrade verification for 273 files ([770bf79](https://github.com/Ikalus1988/MisakaNet/commit/770bf79e683bc08fb542330bedfd3d2156f70bbd)) ### Documentation * add dsh.so badges and agent-native capability description ([1a3cb83](https://github.com/Ikalus1988/MisakaNet/commit/1a3cb831bf6b3ae665603fbf823bd5632b7696c3)) * add weekly Workers AI benchmark badge to README ([a7b2ae5](https://github.com/Ikalus1988/MisakaNet/commit/a7b2ae5b179cf146e590f8b4d11fd651230dc3ad)) ## [2.22.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.21.0...v2.22.0) (2026-08-27) ### Features * add misakanet_memory_context tool ([#1165](https://github.com/Ikalus1988/MisakaNet/issues/1165)) ([6028b36](https://github.com/Ikalus1988/MisakaNet/commit/6028b36215075ba324c5f596a95166a5c7e20127)) * **agent-readiness:** add MCP server card, A2A agent card, auth.md, API catalog ([d388fc9](https://github.com/Ikalus1988/MisakaNet/commit/d388fc9cadff99b5bef8801e5cc4c91c793f59c6)) * **agent-readiness:** quick wins — AI crawler rules, llms-full.txt, A2A agent card, agent headers ([ffa3f32](https://github.com/Ikalus1988/MisakaNet/commit/ffa3f32998e7a7956c283787fb34d5bdd6ef2466)) * AI Agent Friendly Configuration ([f83dcc5](https://github.com/Ikalus1988/MisakaNet/commit/f83dcc5586b998256da42fb499d664a7bab3d098)) * auto-fix 158 lesson quality issues ([4dcffb7](https://github.com/Ikalus1988/MisakaNet/commit/4dcffb7025e38d5b6239908a506516ceed3f49a6)) * configurable BM25/vector hybrid search weights ([#1220](https://github.com/Ikalus1988/MisakaNet/issues/1220)) ([fe3b4fb](https://github.com/Ikalus1988/MisakaNet/commit/fe3b4fb1acf23e6217b90c05e2f48d4389219348)) * generate verification commands for 150+ lessons ([d2aac93](https://github.com/Ikalus1988/MisakaNet/commit/d2aac93ed9b4e910beeeb7172cff3f89f1d0b9c4)) * **pr-genius:** split rules into repo-agnostic and repo-specific layers ([0e50189](https://github.com/Ikalus1988/MisakaNet/commit/0e501892d622e8f34748a4e976319039727b3e0d)), closes [#1036](https://github.com/Ikalus1988/MisakaNet/issues/1036) * **search:** progressive disclosure for worker search results ([bf5663c](https://github.com/Ikalus1988/MisakaNet/commit/bf5663c2c0070cfc768f7b986b4cb759f6d87101)), closes [#1167](https://github.com/Ikalus1988/MisakaNet/issues/1167) * update intake evaluation workflow and quality gates ([1b664e9](https://github.com/Ikalus1988/MisakaNet/commit/1b664e9a57bc1680522c818aa3736ceca67cb548)) ### Bug Fixes * **agent-readiness:** api-catalog in RFC 9264 linkset format; auth.md standard title ([8a8c940](https://github.com/Ikalus1988/MisakaNet/commit/8a8c940120769cf1045cdf5309f31bb5a53a12f1)) * batch fix 19 frontmatter mix issues + delete 3 duplicates ([0feb6da](https://github.com/Ikalus1988/MisakaNet/commit/0feb6da985dcc37ab1592ba5018ace99f757fcd0)) * **ci:** add custom_model_max_tokens for minimax-M3 ([2381885](https://github.com/Ikalus1988/MisakaNet/commit/23818853d139c2c200a83763341c429fc13a6a0b)) * **ci:** add GH_TOKEN to intake auto-review workflow ([04e1d80](https://github.com/Ikalus1988/MisakaNet/commit/04e1d801fe02671a7133eba6754c82f078bea8f7)) * **ci:** add OPENAI_API_BASE for pr-agent Mify gateway ([9547e67](https://github.com/Ikalus1988/MisakaNet/commit/9547e67e28518340fa87bb19d30ff06e9c623680)) * **ci:** handle exit code 1 from intake auto-review script ([c47e5f7](https://github.com/Ikalus1988/MisakaNet/commit/c47e5f716e2785f45adec93caed0b0770c0080a0)) * **ci:** pr-agent minimax M3 config ([585cbbc](https://github.com/Ikalus1988/MisakaNet/commit/585cbbc0735a0607c1886333d6595ba1b920cc27)) * **ci:** remove broken result output from intake workflow ([a673a40](https://github.com/Ikalus1988/MisakaNet/commit/a673a40a36f64ccc55d4bb9274b30e10e14e5553)) * **ci:** use openai/ prefix for minimax-M3 in litellm ([aad2c34](https://github.com/Ikalus1988/MisakaNet/commit/aad2c346a500830be4ebaded0aad556f8b2f0928)) * clean empty verification templates ([5d9ed2a](https://github.com/Ikalus1988/MisakaNet/commit/5d9ed2a98043e3d302a53ac94ef6a8d948e9c343)) * **dsh-plugin:** add package entry (index.js) so DSH plugin install succeeds ([03d3ffc](https://github.com/Ikalus1988/MisakaNet/commit/03d3ffcb07140d1bf4e5a42370ab784036c507b2)) * **dsh-plugin:** declare type:module for ESM entry (index.js) ([5da6828](https://github.com/Ikalus1988/MisakaNet/commit/5da6828a908c9c29f6a2ecf7aa960edd317548a7)) * import GITHUB_API, REPO, PUBLIC_DATA_BASE from handlers.js ([0e639ed](https://github.com/Ikalus1988/MisakaNet/commit/0e639ed35ef5c45066342c96d0c7cd017428f648)) * **lessons:** aider review — expand short lessons + fix verification ([d6dc9df](https://github.com/Ikalus1988/MisakaNet/commit/d6dc9df29427cad32de71e3c5b8f1e7e1aa4c5a9)) * **lessons:** complete P3 — verification upgrade + multilingual support ([203e79e](https://github.com/Ikalus1988/MisakaNet/commit/203e79e75e5586d74fa498a8e9925482c5df9929)) * **lessons:** dual-axis review batch fixes ([471c41c](https://github.com/Ikalus1988/MisakaNet/commit/471c41c2338ad0f8f74e4c60d4b80a405f241f50)) * **lessons:** P3 Chinese headings + P4 duplicate consolidation ([7842f03](https://github.com/Ikalus1988/MisakaNet/commit/7842f03c3cc0d48d40109161d6719d034a6cdca8)) * **lessons:** upgrade 55 weak verification sections with solution-derived commands ([2ea063b](https://github.com/Ikalus1988/MisakaNet/commit/2ea063b26f73b7a9f9fc99edc185967b3bbcbbbf)) * **mcp:** allow initialize+tools/list without auth for registry scanners ([e3796f1](https://github.com/Ikalus1988/MisakaNet/commit/e3796f13626849db370cb2810204c8fd4324845e)) * **mcp:** allow misakanet.org origin for WebMCP bridge (same-origin browser requests were 403) ([7bef82a](https://github.com/Ikalus1988/MisakaNet/commit/7bef82a23783984d22022719cb2060600442c34b)) * **mcp:** restore search backend compatibility ([105237d](https://github.com/Ikalus1988/MisakaNet/commit/105237d01df960a41af2740e9f9dcbb5a44405c5)) * **mcp:** use Bearer token for write_lesson auth instead of args.token ([65936c9](https://github.com/Ikalus1988/MisakaNet/commit/65936c90ee78a56d238d392b28c2fede56130455)), closes [#1240](https://github.com/Ikalus1988/MisakaNet/issues/1240) * **readme:** remove duplicate register section ([3ef58dd](https://github.com/Ikalus1988/MisakaNet/commit/3ef58ddc59d332a967f32d92fc3c236da56b9757)) * security and correctness improvements from review ([bd7f4ac](https://github.com/Ikalus1988/MisakaNet/commit/bd7f4acb9e6e296ab82e981590a2ea76941c17e3)) * **security:** truncate snippet output to prevent secret leakage ([35d6d71](https://github.com/Ikalus1988/MisakaNet/commit/35d6d71dc6f43d2c03d6aebb4840917a9bc88452)) * update quality gate to support YAML + clean banned content ([e2aa42d](https://github.com/Ikalus1988/MisakaNet/commit/e2aa42d942aa687f6fa52b5ce94788e890b180b7)) ### Documentation * add dual-axis lesson quality review report ([3179377](https://github.com/Ikalus1988/MisakaNet/commit/3179377b06c230609a43e629f26625a074a6d15c)) * add lesson quality scan report ([9f1c0a8](https://github.com/Ikalus1988/MisakaNet/commit/9f1c0a8aa3f73e94ce6035fb2cad4fcdecfbd10a)) * add optional local DCO check to CONTRIBUTING.md ([726f1db](https://github.com/Ikalus1988/MisakaNet/commit/726f1db7a5fc31902b503093dc15412ec1415b7f)) * add optional pre-commit hook to welcome bot messages ([d21e8b1](https://github.com/Ikalus1988/MisakaNet/commit/d21e8b1a28b7e70aef3382bf575c12666dc7799b)) * add Smithery badge to README for verification ([60099b0](https://github.com/Ikalus1988/MisakaNet/commit/60099b007a40bdd19c6622d31df3194880c8a6e8)) * add smithery badge URL for verification detection ([2688370](https://github.com/Ikalus1988/MisakaNet/commit/26883708a2e68a96b197bf2081d379852931a04c)) * fix smithery badge URL (use shields.io fallback) ([efe6735](https://github.com/Ikalus1988/MisakaNet/commit/efe6735697dd3f71f2e9e99d9354a040d7ad4201)) * update lesson quality scan report ([c516471](https://github.com/Ikalus1988/MisakaNet/commit/c51647198d41801279186890f6a9ff3a560f82cf)) ## [2.21.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.20.1...v2.21.0) (2026-08-24) ### Features * **docs:** set up mkdocs-material documentation site ([420ff0f](https://github.com/Ikalus1988/MisakaNet/commit/420ff0ffc0bf66ba7e65aaba7252f537933c4cb8)), closes [#1179](https://github.com/Ikalus1988/MisakaNet/issues/1179) * **intake:** add archiving system for review/reject decisions ([b503c24](https://github.com/Ikalus1988/MisakaNet/commit/b503c240163be33338acd1101194e10cbe212ff0)) * **intake:** add auto-review pipeline for intake issues ([ae3f81c](https://github.com/Ikalus1988/MisakaNet/commit/ae3f81cfc3b90868e246293529bf4e45f0197403)) * **intake:** archive 20 intake issues ([60f2525](https://github.com/Ikalus1988/MisakaNet/commit/60f25253739f850d9b624af276cb44458b8a98de)) * **intake:** archive existing intake issues ([5d90013](https://github.com/Ikalus1988/MisakaNet/commit/5d90013fbeb0064c53e99df822ecf44d5de854ba)) * **integration:** add LangChain and LlamaIndex tool wrappers ([e2ad13b](https://github.com/Ikalus1988/MisakaNet/commit/e2ad13bbd7ea34db0ca30dfc43c07440e0b92364)), closes [#1178](https://github.com/Ikalus1988/MisakaNet/issues/1178) * **search:** add BM25 search with pre-computed inverted index ([04a156e](https://github.com/Ikalus1988/MisakaNet/commit/04a156e1778b77a86f672557c344756d8c330fd6)), closes [#1189](https://github.com/Ikalus1988/MisakaNet/issues/1189) * **worker:** add SSE transport support for MCP endpoint ([7aad564](https://github.com/Ikalus1988/MisakaNet/commit/7aad5649c8878a09d757d3147ecfd24ad9c6ac3e)) ### Bug Fixes * **ci:** exempt dependabot PRs from DCO check ([37ac9c3](https://github.com/Ikalus1988/MisakaNet/commit/37ac9c3712a385e34adb7d22974f7eae3cbe37b8)) * **ci:** make audit report comment non-blocking ([70e1fc2](https://github.com/Ikalus1988/MisakaNet/commit/70e1fc2b6bb015249d7cc02b3ee66aff67b13752)) * **deps:** revert chromadb version bump (1.5.10 not yet released) ([a57bd84](https://github.com/Ikalus1988/MisakaNet/commit/a57bd84ac53ba943dbc7dfffb138c296fa986cdf)) * **security:** address CodeQL and Dependabot alerts ([fc2700c](https://github.com/Ikalus1988/MisakaNet/commit/fc2700ca445699b9cb4efac0ca83389de2e55c73)) * **tests:** remove fuzz tests requiring hypothesis ([4a9a73c](https://github.com/Ikalus1988/MisakaNet/commit/4a9a73c8fd170aae29a807cb65f67bbe7b10b4db)) ## [2.20.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.20.0...v2.20.1) (2026-08-23) ### Bug Fixes * replace bare backticks in tests to pass shape guard ([c8b0016](https://github.com/Ikalus1988/MisakaNet/commit/c8b0016f28c366c724af173ebdd8b60e2850937c)) ## [2.20.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.19.1...v2.20.0) (2026-08-23) ### Features * **ci:** add auto-search MisakaNet lessons on CI failure ([#1237](https://github.com/Ikalus1988/MisakaNet/issues/1237)) ([d09e92e](https://github.com/Ikalus1988/MisakaNet/commit/d09e92e7b7fbbed24c563b893ce360361f242154)) * **search:** add gap cluster script for zero-result analysis ([#1236](https://github.com/Ikalus1988/MisakaNet/issues/1236)) ([54514e9](https://github.com/Ikalus1988/MisakaNet/commit/54514e99242a88eca797e2622d5d8f10d2ded4e0)) * **shell:** add auto-search hook for command failure ([#1235](https://github.com/Ikalus1988/MisakaNet/issues/1235)) ([adaf4bc](https://github.com/Ikalus1988/MisakaNet/commit/adaf4bce49ed12fe479f4369188effc5b386fe07)) ### Bug Fixes * **ci:** fix shell escaping issues in ci-lesson-search workflow ([f52982e](https://github.com/Ikalus1988/MisakaNet/commit/f52982e1d499377ccd7e3c1d68aeb86893079bbd)) * **ci:** upgrade pr-agent to v0.43.0 to fix AttributeError bug ([f869a31](https://github.com/Ikalus1988/MisakaNet/commit/f869a31a5281fda861978bec1f9fa5c5190a55f3)) * configure pr-agent for minimax M3 via OpenRouter ([90a7892](https://github.com/Ikalus1988/MisakaNet/commit/90a7892d951a6039af6adff1671ba3ef9743742f)) * **readme:** remove duplicate agent compatibility badges ([75a021d](https://github.com/Ikalus1988/MisakaNet/commit/75a021d20e812e9d7cc368d62a8c67b381325d44)) * replace hardcoded lesson/domain counts with dynamic badges ([597d2b3](https://github.com/Ikalus1988/MisakaNet/commit/597d2b36b1f1c4713f3eb2bd56a73095e792fe50)) * update lesson count check in pr-checks.yml ([99da603](https://github.com/Ikalus1988/MisakaNet/commit/99da6030cb9046689bb2750a167950e3eac454d1)) ### Reverts * **readme:** revert PR [#1234](https://github.com/Ikalus1988/MisakaNet/issues/1234) visual badges changes ([dae39c6](https://github.com/Ikalus1988/MisakaNet/commit/dae39c6ddf5598b4883134b432d71f0228782892)) ### Documentation * optimize README for Glama profile ([ef241ab](https://github.com/Ikalus1988/MisakaNet/commit/ef241abe65cce09b196a4cf027dabc5b0a0fc663)) * **readme:** add visual badges and hero image ([#1234](https://github.com/Ikalus1988/MisakaNet/issues/1234)) ([129bbfb](https://github.com/Ikalus1988/MisakaNet/commit/129bbfbed1c0dc0929c7753de943596d9c2d2da3)) * **roadmap:** integrate competitive analysis findings into timeline ([#1233](https://github.com/Ikalus1988/MisakaNet/issues/1233)) ([8622223](https://github.com/Ikalus1988/MisakaNet/commit/8622223f20bc5d0feefd42ea99e7d6ffdd432f68)) * simplify README value proposition ([b723e72](https://github.com/Ikalus1988/MisakaNet/commit/b723e72513a5a11fe21ba3bf82ecf4846ee41ef3)) * update lesson count in mcp-quickstart.md ([963632e](https://github.com/Ikalus1988/MisakaNet/commit/963632e3c24e3046ac1703f71e1e676f7440d3c9)) ## [2.19.1](https://github.com/Ikalus1988/MisakaNet/compare/v2.19.0...v2.19.1) (2026-08-23) ### Bug Fixes * **workflow:** update lesson count pattern in release-please ([d690a43](https://github.com/Ikalus1988/MisakaNet/commit/d690a438e3f29809e2d208f5b227706b8fa45472)) ### Documentation * clean README duplicate content ([61c4e27](https://github.com/Ikalus1988/MisakaNet/commit/61c4e27198c05866324313649f3529496010a807)) * manually update version to v2.19.0 and lesson count to 435 ([e6a51d3](https://github.com/Ikalus1988/MisakaNet/commit/e6a51d3b7b97350bb8516b557601af73976b26a7)) * **readme:** update version to v2.19.0 ([c5e18a5](https://github.com/Ikalus1988/MisakaNet/commit/c5e18a5e580247133ebcece2d3d274fd0bb79e38)) * simplify README roadmap and playground ([b15faaf](https://github.com/Ikalus1988/MisakaNet/commit/b15faaf9475f51096b13e17d927c52091f1ab691)) ## [2.19.0](https://github.com/Ikalus1988/MisakaNet/compare/v2.18.0...v2.19.0) (2026-08-23) ### Features * batch improvements - lessons, provenance, scripts ([873d068](https://github.com/Ikalus1988/MisakaNet/commit/873d0689dc4e361d70e7c2e5c53b35de0973824d)) * **ci:** add mypy type checking for misakanet/ core package ([#1241](https://github.com/Ikalus1988/MisakaNet/issues/1241)) ([5114a7b](https://github.com/Ikalus1988/MisakaNet/commit/5114a7b5da71f8f31f45a66b74617d670288fd62)), closes [#1181](https://github.com/Ikalus1988/MisakaNet/issues/1181) * **dx:** changelog generator with tests and CI integration ([#1216](https://github.com/Ikalus1988/MisakaNet/issues/1216)) ([781e024](https://github.com/Ikalus1988/MisakaNet/commit/781e0244cd9f590ffdc8da456221b64d1b62009e)) * dynamic badges for README ([5bd3870](https://github.com/Ikalus1988/MisakaNet/commit/5bd3870f820f3595a0e0e867ebee95ad54ae653a)) * **fatal-guard:** harden CLI entry point ([13bab43](https://github.com/Ikalus1988/MisakaNet/commit/13bab4394da950264962da2db6f8503f881ceec6)) * implement release-please workflow ([9f25f86](https://github.com/Ikalus1988/MisakaNet/commit/9f25f8608d13b4f58b0a99adbd5979be250550ac)) * **mcp:** add debug logging for Remote MCP endpoint ([#1230](https://github.com/Ikalus1988/MisakaNet/issues/1230)) ([be853e0](https://github.com/Ikalus1988/MisakaNet/commit/be853e0bd3535a159a89b2ef449e4572f8b43c17)), closes [#1206](https://github.com/Ikalus1988/MisakaNet/issues/1206) * **mcp:** add misakanet_register tool to local MCP servers ([01bb346](https://github.com/Ikalus1988/MisakaNet/commit/01bb346487250fbed0e59a17d7310e1429ff0da8)) * **mcp:** add tool filtering via MISAKA_TOOL_FILTER env var ([#1204](https://github.com/Ikalus1988/MisakaNet/issues/1204)) ([#1228](https://github.com/Ikalus1988/MisakaNet/issues/1228)) ([01d2225](https://github.com/Ikalus1988/MisakaNet/commit/01d22251f6d15964e31f8ef42876d4894477f9bf)) * **mcp:** add write_lesson and preflight tools to remote Worker ([#1225](https://github.com/Ikalus1988/MisakaNet/issues/1225)) ([6a709f8](https://github.com/Ikalus1988/MisakaNet/commit/6a709f80dcb9724410a92abcb6d8d8592a5a2ce8)) * **mcp:** improve tool descriptions + add write_lesson tests ([c81c766](https://github.com/Ikalus1988/MisakaNet/commit/c81c766a4123890f55ca1cd3954fe49b65db3b5e)) * **pr-genius:** make rules configurable via .pr-genius.yaml ([#1215](https://github.com/Ikalus1988/MisakaNet/issues/1215)) ([f96f06b](https://github.com/Ikalus1988/MisakaNet/commit/f96f06b071bc60be65d8461d023b677b0687ba5b)) * **provenance:** add lesson provenance tracking to 9 core lessons ([892e129](https://github.com/Ikalus1988/MisakaNet/commit/892e129a0f7fe0c01fe16af3033dd193a506969e)) ### Bug Fixes * add --config wrangler.toml to ensure the correct Worker is deployed. ([132e37b](https://github.com/Ikalus1988/MisakaNet/commit/132e37b52b2f17dc051baaf76c03c015a21e0114)) * address 3 P0 code review issues ([d07d93c](https://github.com/Ikalus1988/MisakaNet/commit/d07d93c90e37d8e7f429ed160fc3de9a3b4d4a9b)) * address P1 code review issues ([a24bcab](https://github.com/Ikalus1988/MisakaNet/commit/a24bcab10b0cfb40c436e6574c065132f5275df5)) * **ci:** skip DCO check for release-please bot PRs ([4e261e0](https://github.com/Ikalus1988/MisakaNet/commit/4e261e00530f13b81939c1c26becb705a6a91229)) * **ci:** specify --config wrangler.toml in deploy-worker workflow ([132e37b](https://github.com/Ikalus1988/MisakaNet/commit/132e37b52b2f17dc051baaf76c03c015a21e0114)) * exclude README.md from lessons.json index ([a70349c](https://github.com/Ikalus1988/MisakaNet/commit/a70349cff29acef5a5c68a6f9f943a0b31f798dd)) * **fatal-guard:** suppress CodeQL false positive shell injection alerts ([efcb216](https://github.com/Ikalus1988/MisakaNet/commit/efcb2160ad266d0ac5e84d9c71f54ae6fb118a23)) * **fatal-guard:** Windows path handling + FATAL_HANDLER_ARGS + exit_code ([6df5d5a](https://github.com/Ikalus1988/MisakaNet/commit/6df5d5aed3dd3bc30dd864800bdaed862c5f2115)) * **fatal-guard:** Windows payload via temp file instead of CLI arg ([a82e0be](https://github.com/Ikalus1988/MisakaNet/commit/a82e0be69afcad735cce2d41567981f237b8d067)) * hardcoded paths and data consistency ([d45ab95](https://github.com/Ikalus1988/MisakaNet/commit/d45ab9564633f486d7b37ca7e63ce0a54f8e4e7f)) * KV namespace ID and reputation leaderboard test ([0ea76ec](https://github.com/Ikalus1988/MisakaNet/commit/0ea76ecb48f2ae914e813f69d710a9ac0b01d5a3)) * **mcp:** return tool not found for unknown tools ([#1226](https://github.com/Ikalus1988/MisakaNet/issues/1226)) ([cf48077](https://github.com/Ikalus1988/MisakaNet/commit/cf4807732dec0c7a5c64c351f0f92348651923c5)) * remove STATUS.md references from scripts ([584411b](https://github.com/Ikalus1988/MisakaNet/commit/584411bbbb5100fa6c0cd0136a829e644202580d)) * **security:** unify three redaction implementations ([#1188](https://github.com/Ikalus1988/MisakaNet/issues/1188)) ([3ed66e0](https://github.com/Ikalus1988/MisakaNet/commit/3ed66e05d0ed864570cbc08258fe2f31eb478230)) * update STATUS.md lesson count to 382 + add CI check ([ce0fae2](https://github.com/Ikalus1988/MisakaNet/commit/ce0fae26afa5c8fb286ccff0c52d2fb7cdc66342)) * **worker:** address 5 security/quality issues from Aider second audit ([9ffd22b](https://github.com/Ikalus1988/MisakaNet/commit/9ffd22bf0211b303b80fe07d92d0b6c058cc0f03)) * **worker:** resolve ReferenceError in misakanet_search MCP tool ([ca3291d](https://github.com/Ikalus1988/MisakaNet/commit/ca3291d3509ecb8af60fa10f16c11f4b244430f5)), closes [#1186](https://github.com/Ikalus1988/MisakaNet/issues/1186) * **worker:** store mcp_token: KV key during registration ([06885e1](https://github.com/Ikalus1988/MisakaNet/commit/06885e1873949bf5b0e9fca95dd68550d10fd5af)) * **worker:** use ESM imports for lib modules ([15fc7d5](https://github.com/Ikalus1988/MisakaNet/commit/15fc7d554ea60f04de13e12884e170f44e30593c)) * **workflow:** add missing step id for tools count ([451face](https://github.com/Ikalus1988/MisakaNet/commit/451faceb3a3fae9ee72106337792f0f90e12dcb6)) * **workflow:** fix badge detection for untracked files ([cbb2253](https://github.com/Ikalus1988/MisakaNet/commit/cbb22531cff850d574bb7b6aa5d0f60fed533ea3)) * **workflow:** fix step reference for tools count ([70903d1](https://github.com/Ikalus1988/MisakaNet/commit/70903d1c115ed8680b510cf16090423f622978d1)) ### Documentation * add agent compatibility grid to README ([#1153](https://github.com/Ikalus1988/MisakaNet/issues/1153)) ([a886c52](https://github.com/Ikalus1988/MisakaNet/commit/a886c52cb18f3dcc729d7713c0534682584ae2a1)), closes [#1147](https://github.com/Ikalus1988/MisakaNet/issues/1147) * add pip install example + Try it now table to README ([#1194](https://github.com/Ikalus1988/MisakaNet/issues/1194)) ([#1227](https://github.com/Ikalus1988/MisakaNet/issues/1227)) ([a16fbb1](https://github.com/Ikalus1988/MisakaNet/commit/a16fbb1b970cee8c2f2d970fc0e33d0feb8339a0)) * fix lesson count to 310 (actual data/lessons.json count) ([953b18a](https://github.com/Ikalus1988/MisakaNet/commit/953b18a7bba602f1b911a09d5e376c30912e583e)) * **mcp:** update remote MCP intake ways and tool list ([5e40250](https://github.com/Ikalus1988/MisakaNet/commit/5e402500210156d6f0c020b872d0fffbdac8fdc6)) * **readme:** add PyPI install option to Quick Start ([15c4287](https://github.com/Ikalus1988/MisakaNet/commit/15c4287ae698f0249450e8c2d3c455c74b2f802f)) * **readme:** deduplicate curl examples, fix lesson count ([ba3347c](https://github.com/Ikalus1988/MisakaNet/commit/ba3347cdb6f35c55db16e240a6c4b784864237fd)), closes [#1195](https://github.com/Ikalus1988/MisakaNet/issues/1195) * **roadmap:** add competitive analysis track (v2.18 Agent Memory Quality Loop) ([#1169](https://github.com/Ikalus1988/MisakaNet/issues/1169)) ([1348510](https://github.com/Ikalus1988/MisakaNet/commit/13485107ff0a1a7d023234b67517af272abea985)) * simplify Quick Start — remote MCP as primary entry point ([e811e58](https://github.com/Ikalus1988/MisakaNet/commit/e811e585f4a8737417eae9fdf43c93fe62dbefbc)) * sync STATUS.md, ROADMAP.md, README.md to v2.18.0 ([#1171](https://github.com/Ikalus1988/MisakaNet/issues/1171)) ([7fe7474](https://github.com/Ikalus1988/MisakaNet/commit/7fe7474a99396bab0c80b34406696806225e3d3f)) * update lesson count in STATUS.md from 310 to 388 ([d7a1c29](https://github.com/Ikalus1988/MisakaNet/commit/d7a1c291c1bff7c29c2fd2fd3ffe814e755cec63)) ## v2.18.0 — 2026-08-21 ### Highlights - **Agent-first registration**: Email intake via bot@misakanet.org, auto-assign node ID - **Preflight guardrails**: `misakanet_preflight` tool checks risk level before execution - **Remote MCP intake**: `misakanet_submit_intake` works without authentication - **Identity Aura**: Visual badges for static/paired/upgraded tokens - **Voice Prompts**: Voice hint system for agent guidance ### Data - 310 lessons, 25+ domains --- ## v2.17.1 — 2026-08-16 ### Highlights - **Remote MCP Intake**: No-account lesson contribution path via `misakanet_submit_intake` --- ## v2.17.0 — 2026-08-13 ### Highlights - **Trust & Curation Hardening**: Enhanced quality gates and evidence levels --- ## v2.16.0 — 2026-08-11 ### Highlights - **Remote MCP**: Streamable HTTP endpoint at `https://misakanet.org/mcp` - **Pairing Code**: Quick 24-hour token via https://misakanet.org/connect - **Identity Aura**: Agent identity authentication - **Voice Prompts**: Voice hint system - **Security hotfixes**: MCP path traversal, XSS escape --- ## v2.15.0 — 2026-08-03 ### Highlights - **First-call quickstart**: README now shows `Search MisakaNet for "database locked"` with expected output. New users can verify MCP works in 5 minutes. - **Glama analytics boundary documented**: `docs/integrations/glama-analytics.md` — 0 Glama-routed tool calls ≠ 0 usage. MCP stdio works independently. - **Runtime smoke matrix**: `docs/integrations/runtime-smoke-matrix.md` — verified entry points for Cursor, Claude Code, `misaka run`, and shell helper. - **GHCR container quickstart**: Docker option added to README and quickstart. `docker pull ghcr.io/ikalus1988/misakanet:latest`. - **PR Genius v1.3.1**: Pinned by commit SHA, advisory-only, checkout removed, continue-on-error enabled. 12 PR observation report: 100% accuracy. - **server.json updated**: Description emphasizes first use case, not lesson count. - **Integration index refreshed**: `docs/integrations/README.md` reflects current status (Cursor ✅, Claude Code ✅, shell ✅). ### Docs - `docs/integrations/glama-analytics.md` — Glama counting boundary, external communication wording - `docs/integrations/runtime-smoke-matrix.md` — 4 entry points with setup/trigger/expected/limitations - `docs/integrations/mcp-smoke-report.md` — MCP stdio verification (carried from v2.14.0) - `docs/maintainer/handoff-2026-08-03.md` — maintainer closeout notes - `docs/quickstart.md` — Docker option added ### Data - 271 lessons, 25 domains, 374 stars, 137 forks --- ## v2.14.0 — 2026-07-29 ### Highlights - **Contribution credits and usage quota**: `scripts/usage_meter.py` — track lesson reads, enforce free quota (5/day anonymous, 20/day registered), manage credits from accepted contributions. - **Contribution queue**: `scripts/contribution_queue.py` — submit intake/lesson drafts with automatic redaction, dedup, and quality scoring. No auto-accept. - **Maintainer review CLI**: `scripts/contribution_review.py` — accept/reject contributions, grant credits, convert to lesson drafts. - **Capture CLI**: `scripts/misaka_capture.py` — `misaka capture --summary "error" --context log.txt` for redacted failure reports. - **GitHub Action capture**: `.github/actions/misaka-capture/` — CI failure capture as artifacts (opt-in, no auto-publish). - **Feedback intake**: `search_knowledge.py --feedback` — post-search feedback routed to contribution queue. - **Demand board endpoint**: `GET /api/insights/demand-board` — public aggregate view of intake clusters. - **Trust semantics**: `docs/trust-semantics.md` — defines indexed/published/verified consistently. - **Runtime entry**: Cursor failure-memory rule + Claude Code failure playbook + `misaka run` wrapper. - **README rewrite**: Single use case focus — "redacted failure-memory layer for AI coding agents". ### New files | File | Purpose | |------|---------| | `scripts/usage_meter.py` | Usage quota and credit management | | `scripts/contribution_queue.py` | Contribution queue with redaction and dedup | | `scripts/contribution_review.py` | Maintainer review CLI | | `scripts/misaka_capture.py` | CLI capture for redacted failure reports | | `scripts/misaka_run.py` | Command wrapper with MisakaNet search on failure | | `.github/actions/misaka-capture/` | GitHub Action for CI failure capture | | `.cursor/rules/misakanet-failure-memory.mdc` | Cursor failure-memory rule | | `docs/integrations/cursor-failure-memory.md` | Cursor integration guide | | `docs/integrations/claude-code-failure-memory.md` | Claude Code failure playbook | | `docs/trust-semantics.md` | Trust level definitions | | `docs/release-checklist.md` | Release process checklist | ### Data - 260+ lessons, 22 regression queries, 4 MCP tools --- ## v2.13.0 — 2026-07-29 ### Highlights - **Feedback intake loop**: `POST /api/intake` — private, redacted feedback submission from curl, MCP, agents, or sandbox environments. No GitHub account or browser session required. - **Secret redaction**: All intake payloads are redacted before persistence. API keys, GitHub tokens, Slack tokens, AWS keys, PEM private keys, credit cards, credentials in URLs, and environment dumps are stripped. `scripts/intake_redact.py` provides reusable redaction module. - **Intake classifier**: `scripts/intake_classify.py` — routes intake entries to `lesson`, `bug`, `rescue`, or `noise` categories. Constrained output: no crashes on malformed input. - **Demand board**: `scripts/demand_board.py` — tracks intake clusters with states (new → reviewed → routed | rejected). Maintainer override with full history trail. Task family whitelist aligned with Worker endpoints. - **17 new community lessons**: Tailscale migration, Ghostty memory leak, K8s CrashLoopBackOff, Ruby memory debugging, MCP context mode, ML-DSA cryptography debugging, TypeScript tsconfig trap, agent reward hacking, and more (heartbeat v5/v6/v7). - **Roadmap**: 3-month roadmap (v2.13 → v2.15) with milestone requirements. RFC evaluation, lesson pipeline blog post. - **Glama badges**: Standard Markdown badge format for cross-platform rendering. ### New files | File | Purpose | |------|---------| | `scripts/intake_redact.py` | Secret redaction module (API keys, tokens, PEM, AWS, credit cards, env dumps) | | `scripts/intake_classify.py` | Intake classifier — routes to demand board | | `scripts/demand_board.py` | Demand board data model + CLI (record, list, override, summary) | | `tests/test_intake_redaction.py` | 30 tests: empty body, oversized, secrets, env dumps, e2e | | `tests/test_demand_board_model.py` | 24 tests: states, override, aggregation, persistence | | `tests/test_intake_classify.py` | 17 tests: constrained output, malformed input safety | | `docs/rfc-280-90-day-roadmap.md` | 90-day roadmap RFC evaluation | | `docs/blog/2026-07-29-lesson-pipeline-from-curation-to-automation.md` | Lesson pipeline blog post | ### Worker changes - `workers/register-proxy-sw.js` — new `POST /api/intake` endpoint with secret redaction, IP rate limiting (10/hour), body size limit (8KB), field whitelist validation, and demand signal recording. ### Data - 380+ lessons, 10+ active contributors, MCP server functional ### Non-blocking items (deferred) - `--feedback` flag (#622) — DCO blocked - Smithery, Registry bump, GitHub /mcp — deferred to v2.15 - Auto-publish, auto-issue, auto-PR — out of scope --- ## v2.11.0 — 2026-07-14 ### Highlights - **LessonReuseBench MVP**: Evaluate whether AI agents reuse prior failure lessons. 3 A/B task pairs (DCO, secret-scan, db-lock). Runner script with dry-run/compare modes. - **Debug Pain Index**: `docs/debug-pain-index.md` — quick reference table for 9 common pain points. - **Troubleshooting**: `docs/troubleshooting.md` — 10 real error scenes with fixes and lesson links. - **llms.txt**: `docs/llms.txt` — structured metadata for LLM/agent consumption. - **Integration guides**: Cursor, Claude Code, Continue setup docs. - **Technical article**: "Can coding agents learn from previous failures?" - **Benchmark challenge**: `docs/benchmark-challenge.md` — invitation to run and share results. ### Data - 205 lessons, 52+ nodes, 17 topic pages, 224 sitemap URLs --- ## v2.10.0 — 2026-07-13 ### Highlights - **MCP Consumption**: `docs/mcp-quickstart.md` for Cursor / Claude Desktop / Claude Code. README MCP first-fold entry. - **SEO Lesson Pages**: 205 static lesson pages + 10 domain topic pages + 7 intent topic pages (dco, github-token, pip-timeout, feishu, fanuc, wsl, feishu-mcp). - **AI-readable README**: Project summary table, structured for LLMs and crawlers. - **CITATION.cff**: Machine-readable citation metadata. - **Quality Flywheel v0**: `data/regression_queries.json` (10 high-signal queries) + `docs/reports/search-badcases-2026-07-13.md`. - **fatal-guard opt-in report**: `scripts/report_preview.py` — local preview with auto-redaction. - **Intent topic pages**: User-intent based topics (dco, github-token, pip-timeout, etc.) alongside domain topics. ### Fixes - Sitemap: 224 URLs (205 lessons + 17 topics + 3 static) - MCP server version synced to 2.10.0 --- ## v2.9.2 — 2026-07-13 ### Highlights - **Chinese README rewrite**: Complete rewrite of `README.zh-CN.md` replacing corrupted mojibake encoding. Narrative synced with English: Git-backed failure lesson network, 205+ lessons, 52+ nodes. - **ROADMAP.md**: Updated v2.9.x planning and v3.0 candidates. --- ## v2.9.1 — 2026-07-12 ### Highlights - **Crawler discoverability**: Added `sitemap.xml` (8 URLs), `robots.txt`, canonical URLs, OpenGraph metadata for homepage and search page. - **Release metadata sync**: README badges updated (52+ nodes, 205+ lessons), STATUS.md updated, stale release text fixed. - **Frontend stabilization**: Nav drawer anchor targets, Network Signals compact stats bar, search count searchable/total breakdown. - **Architecture diagram**: Merged PR #454 — `docs/architecture-293.md`. - **Frontmatter batch**: Merged PR #452 — 20 bare JSON frontmatter converted to YAML. ### Fixes - Removed misleading active nodes panel from homepage. - Fixed `skill.md` link in nav drawer (root → docs/). --- ## v2.9.0 — 2026-07-12 ### Highlights - **Search product chain**: Dedicated `/search/` page with URL query support, quality filter, scoring, inline preview, and auto-expand via `?lesson=` param. Homepage search button routes to search page. - **Search suggestions → search page**: Clicking a dropdown lesson navigates to `/search/?q=...&lesson=...` and auto-expands the lesson preview, instead of jumping directly to GitHub. - **Network Voices**: Curated contributor testimonials section on homepage — real pain points, real help, GitHub-audited sources. Bilingual (zh/EN). - **Nav drawer**: Left-top hamburger menu with Main / Network / For Agents / Contact sections. Esc and overlay click to close. - **Network Signals**: Compact stats bar showing registered nodes, curated lessons, feed items, and last updated timestamp. - **Node list collapse**: Recent registrations limited to 6 with "View all N registered nodes" expand. - **i18n**: zh/EN toggle for homepage search panel, Voices section, and `/search/` page. Shared `localStorage: misakanet-lang`. - **Lessons data guard**: CI checks in `build-feed.yml` and `sync-data.yml` prevent syncing empty/truncated `lessons.json`. - **Onboarding docs**: DCO sign-off quickstart for Windows (`docs/dco-windows.md`), secret-scan troubleshooting (`docs/secret-scan-windows.md`). - **PR merged-thank workflow fix**: Switched from fragile `SHELDON_PAT` to `GITHUB_TOKEN`. ### Data - `data/lessons.json`: 202 lessons (restored from ae26b18 after f081eda truncation incident). - `docs/community/voices.json`: 5 curated voices with zh/EN fields. - `data/feed.json`: 11 feed items. ### Fixes - README broken links: `docs/agents/quickstart.md` → `docs/quickstart.md`, `misaka-face.jpg` → `og-card.png`. - Nav drawer `skill.md` link: root → `docs/skill.md`. - Search click bug: `onclick` referenced out-of-scope `l` variable; fixed by embedding URL directly. - Lesson count fallback: hardcoded 198 → 202. ### Closed Issues - #443, #444 (docs), #447 (PR), #416, #393, #379, #380, #378, #394, #388 (competition resolved), #429, #430, #434 (search/UX), #291, #353, #292 (stale docs), #450 (Network Voices). --- ## v2.8.1 — 2026-07-07 ### Highlights - **A→C crash-to-draft hardening**: `tombstone_to_draft.py` now redacts tokens, emails, paths, IPs (stdlib-only). Bounty/reward language replaced with zero-bounty credit semantics. - **Safer contributor workflow**: `queue_lesson.py --dry-run --suggest-git` lets contributors preview lessons without triggering file writes or git operations. - **Frontend/API stability**: Frontend switched to same-origin `/api/lessons` (avoids GitHub raw 429). Worker restored `/api/counter`, `/api/lessons`, `/api/helpful` endpoints. - **Search/index alignment**: `export_okf.py --from-index` exports from `lessons.json`. OKF/SAG/Lessons all at 194 entries. - **Quality improvements**: Leaderboard scoring formula refined, `--explain` score breakdown added, 125 lesson metadata normalized, real incident lessons added. ### Data - `data/lessons.json`, OKF export, and SAG-Lite index regenerated from the same source (194 aligned). --- ## v2.8.0 — 2026-07-02 ### 🔗 Federation - **pr-genius peer declaration** (experimental): query-only federation peer for external PR intelligence. No auto-sync, no shared credentials. See `docs/federation/pr-genius.md` and `misaka-protocol.json` → `ecosystem.federation.peers`. ### 🚀 Highlights - **MCP Thin Server**: `scripts/mcp_server.py` — MisakaNet search as MCP (Model Context Protocol) server for Claude Desktop, Cursor, Continue.dev integration - **SAG-Lite SQLite Search**: `scripts/build_sag_index.py` — SQLite-based search index for offline/fast search without ChromaDB dependency - **OKF-Compatible Export**: `scripts/export_okf.py` — export lessons in Open Knowledge Format for interoperability - **Helpful Button** (#276): vote on lesson search results to improve ranking quality - **Continue.dev Integration** (#271): MisakaNet search available as Continue.dev context provider - **Blog Posts**: 2 technical blog posts published — "How MisakaNet Turns Failures into Memory" and integration guide - **Integrations Documentation**: comprehensive setup guides for MCP, Continue.dev, and other AI tools - **RAG Lessons Translated** (#263): core RAG lessons translated from Chinese to English - **Quality Score Gate Hardened**: PR quality threshold raised from 40 to 50 (out of 100) - **Core Lesson Quality**: all 10 core lessons now have Root Cause + Verification sections with executable commands ### 📦 Lessons - 207+ published lessons (11 core + 196+ contrib) - Quality scoring: average 0.261, top lessons scoring 1.0 - Core lessons quality improved: dco-auto-fix-workflow (0.15→0.80), pr-cleanup-sop (0.15→0.80), pr-welcome-trigger-trap (0.15→0.80) ### 🔧 Fixes - Windows encoding fix for helpful button tests - Remove sag.db from git tracking - Security: restrict HMAC secret file permissions to owner-only - Frontend: restore tests and add worker keepalive - CI: dependency audit only blocks when deps actually changed --- ## v2.7.0 — 2026-06-18 ### 🚀 Highlights - **A-to-C Closed Loop**: `tombstone_to_draft` converts fatal-guard tombstones to draft lessons, `bench_orchestrator` injects drafts as tasks, agents solve and verify — full crash-to-lesson automation - **fatal-guard v0.2.2**: wrapper mode (`fatal-guard -- `), multi-env-var fallback, env redaction (redact.js), syslog payload, npm published as `@misaka-net/fatal-guard` - **Proof of Access Quota**: 5 free searches for new nodes, unlimited for contributors, quota resets on lesson contribution - **Python Guard Sidecar**: `python3 -m misakanet.guard --to-draft -- ` — crash capture + auto-draft generation - **Log Harvester CLI**: `--harvest --from-file ` — parse error logs and generate failure-memory protocol-compliant lesson drafts - **Cross-Lesson Reference Graph**: related lessons discovered by shared tags - **Contributor Score**: `lessons_contributed` bonus added to leaderboard formula - **Search Ranking Boost** (#228): core (+0.15), verified (+0.10), recent (+0.05) lessons ranked higher; drafts penalized (-0.20) - **README zh-CN** (#245): Chinese translation of README - **Lesson Metadata Standardization** (#250): batch header normalization across 200+ lessons - **CI Security Hardening**: secret scan + dependency audit gates hardened to fail-closed ### 📦 Lessons - 149 published lessons (11 core + 138 contrib, 201 including drafts/archive) - New domains: feishu, fanuc, RAG, browser automation, WSL2 - Quality scoring infrastructure: `scripts/score_lessons.py`, `data/quality_scores.json` ### 🏛️ Governance - Product matrix documented: fatal-guard / MisakaNet / bench-core / misakanet-core - Claim window extended from 4h to 8h - Partners & sponsors program proposal - Enterprise adoption cases documented (2 cases) - Ring-0 founder track proposal ### 🔧 Fixes - Leaderboard `import re` missing (#229) - 124 broken lesson paths repaired in index.md - TTY preservation + OOM crash detection (from 方舟29期) - fatal-guard scope rename `@misakanet` → `@misaka-net` - fatal-guard workflow permissions block added (CodeQL alert #35) --- ## v2.6 — 2026-06-13 ### 🚀 Highlights - **DCO Auto-Fix**: `/fix-dco` command auto-signoffs commits (same-repo) or gives manual instructions (fork) - **Auto-Labeling**: PRs automatically tagged with `area:*` labels based on changed paths - **Stale Management**: PRs auto-reminded at 14d, closed at 21d; Issues at 30d / 44d - **PR Welcome Upgrade**: welcome message now includes DCO fix instructions with copy-paste commands - **Registration Auto-Close**: node registration issues auto-closed with `registered` label after processing - **Branch Sync**: "Update branch" button enabled on all PRs; native `allow_auto_merge` + `allow_update_branch` enabled - **Cleanup**: PRs #142, #133, #137, #200, #202, #203, #195, #194, #206 closed/merged; net -5 open PRs - **i18n**: #201 (pending), #204 YAML fix (pending), #205 BM25 tests (pending) ### 🆕 Workflow Automations - 🆕 `fix-dco.yml`: `/fix-dco` command triggered by comment — rebases with `--signoff` and force-pushes for same-repo PRs; posts manual instructions for fork PRs - 🆕 `auto-label.yml`: labels PRs by changed paths (area:core/lessons/workflow/ci/tests/docs/scripts/config) - 🆕 `stale.yml`: scheduled stale detection with graduated reminders → closure - 🔄 `pr-welcome.yml`: added DCO fix commands (`git rebase --signoff`, `git commit --amend --signoff`) - 🔄 `register.yml`: auto-closes registration issues + adds `registered` label after processing - ⚙️ Repository settings: `allow_auto_merge=true`, `allow_update_branch=true` ### 🏛️ Governance - 🆕 Registered node auto-close to prevent duplicate registration PRs (fixes #148/#206) - 🆕 Label `registered` created for completed registrations - 🆕 PR disposition framework: duplicate/outdated PRs systematically closed with explanation --- ## v2.5 — 2026-06-03 ### 🚀 Highlights - **Zero-Bounty Workflow** validated: PRs from zeroknowledge0x, iccccccccccccc, sureshchouksey8 merged — $0 paid - **Frontend Security**: DOMPurify XSS defense + Vitest regression tests (9 scenarios) + jsdom CI - **Telemetry System**: search latency tracking, cache hit-rate, sliding window audit, dashboard, lesson scoring - **DCO Enforcement**: all commits must `--signoff`, auto-blocked by CI pre-flight gate - **Agent Governance**: submission policy, auto-rejection triggers, Hall of Fame, CODEOWNERS ### 🔒 Frontend Security - 🆕 DOMPurify XSS sanitization for all community content rendering - 🆕 Error boundary UI with graceful degradation on data parse failure - 🆕 `sanitizeInput()`: expanded character filter (8→14 chars covering XSS/JS/shell vectors) - 🆕 Vitest regression suite: 9 scenarios (script/event/javascript:/iframe XSS vectors) - 🆕 Multi-tab sync with hash-based loop prevention - 🆕 `fetchWithCache()`: 8s AbortController timeout, 429 Retry-After parsing, request collapsing - 🆕 `fetchWithCache()`: localStorage 30s TTL cache + stale fallback on network failure - 🔄 vitest environment: `node` → `jsdom` (real DOM instead of hand-written shim) - 🔄 DOMPurify mock expanded: covers iframe/object/embed + single-quoted/unquoted events + javascript: URLs ### 🏛️ Contributor Governance - 🆕 `CONTRIBUTING.md`: Frontend Architecture Guardrails (4 hard constraints) - 🆕 AI Agent Submission Policy with 6 auto-rejection triggers - 🆕 DCO (Developer Certificate of Origin) workflow — `--signoff` required on all commits - 🆕 Governance ladder: Contributor → Reviewer → Approver/Maintainer - 🆕 Agent peer review process for Competition-tagged Issues - 🆕 `.github/CODEOWNERS`: core path protection - 🆕 Hall of Fame with Agent Type classification (Autonomous / Copilot-Assisted / Human) - 🆕 PR size check + suspicious size alert in audit comments - 🆕 ORIGINAL WORK DECLARATION policy ### 📡 Telemetry & Observability - 🆕 Search latency telemetry with SQLite storage (`search_telemetry` table) - 🆕 Cache hit-rate tracking and summary API (`get_telemetry_summary()`) - 🆕 Anti-Abuse Shield: sliding window circuit breaker (10 queries/2s threshold) - 🆕 Local blacklist with 600s rate-limit / 300s low-quality cooldown - 🆕 Query signature dedup detection (`_has_repeated_query_signature()`) - 🆕 Telemetry Dashboard: `ThreadingHTTPServer` with E2E test (PR #121) - 🆕 Lesson scoring CLI (`search_knowledge.py --score`) with BM25 overlap (PR #126) - 🆕 Lesson quality scoring engine with 3× title weight (PR #133) - 🆕 `TelemetryPipeline` async producer-consumer (bounded 500-queue, 1s/10-event batch flush) ### 🧪 Testing - 🆕 14 path-traversal & null-byte regression tests for slugify (PR #113) - 🆕 10 retry execution limit + exponential backoff tests (PR #105) - 🆕 Frontend Shield: 9 regression tests in CI - 🆕 Async telemetry pipeline test suit ### 📋 CI/CD - 🆕 `pr-checks.yml`: DCO pre-flight gate, pytest + coverage (70% threshold), Frontend Shield - 🆕 `lesson-security.yml`: pattern scanning (rm -rf, curl|sh, fork bombs) - 🆕 `dco-check.yml`: standalone DCO verification - 🆕 `update-lessons.yml`: automated lessons.json rebuild - 🆕 `sync-data.yml`: metadata sync to data branch - 🆕 Path filtering: only trigger on relevant file changes ### 🌐 i18n & UX - 🆕 Async locale loading (`zh.json`/`en.json`) with fallback chain (PR #127) - 🆕 Mobile-first responsive breakpoints at 768px/480px (PR #128) - 🆕 Header avatar shrinks to 50%, stats grid stacks to single column - 🆕 Agent classification labels in Contributor table (PR #118) - 🆕 Architecture ASCII diagram in README - 🆕 CLI API reference table (10 parameters + exit codes) ### 🔧 Infrastructure - 🆕 `TelemetryPipeline` async context manager (stdlib only) - 🆕 `lesson_scorer.py`: BM25 token overlap engine - 🆕 `misakanet.tools` package with importable modules ### 📦 Dependencies - Zero new runtime dependencies (stdlib only) - Dev: `vitest` + `jsdom` for frontend tests - `langchain_core` remains optional (try/except import) ### 🧠 Lessons - 185+ lessons (up from 101) - 18 domain categories - Lesson security scanning in CI ### ✅ Agent PRs Merged (Zero-Bounty) | PR | Author | Description | Lines | |----|--------|-------------|-------| | #105 | sagarmaurya64-ai | Exponential backoff retry + node 104 | +159/-0 | | #113 | qi574 | 14 slugify path-traversal tests | +298/-0 | | #115 | cuongwf1711 | Search latency telemetry | +214/-0 | | #116 | cuongwf1711 | LangChain telemetry integration | +145/-0 | | #117 | zeroknowledge0x | Anti-Abuse Shield + circuit breaker | +124/-0 | | #118 | DoView1 | Async streaming, RRF, SQLite cache | +400/-7 | | #121 | sureshchouksey8 | Telemetry Dashboard | +339/-0 | | #126 | iccccccccccccc | Lesson scoring CLI | +215/-4 | | #127 | zeroknowledge0x | i18n externalization | +150/-126 | | #128 | zeroknowledge0x | Responsive breakpoints | +156/-0 | | #129 | iccccccccccccc | Query signature dedup (@contextmanager) | +99/-9 | | #133 | zeroknowledge0x | Lesson quality scoring engine | +319/-0 | ## v1.1.0 — 2026-05-10 ### Knowledge Base - **101 lessons** (up from original 23) - Auto-harvested from 156 local skills via `skill_pipeline.py` - Public lessons cover: Python, WSL, Git, DevOps, RAG, debugging, audio/video processing - All lessons desensitized (paths, tokens, internal URLs replaced) - Excluded: patent-related content, work-specific docs, conversation logs ### Website — Registration - 🆕 Invitation code field (referrer username tracking) - 🆕 Agent type selector: Hermes / Claude / Codex / OpenClaw / OpenCode - 🆕 Non-GitHub registration flow with hex-encoded PAT - 🆕 Success card with estimated node number + next-step guide - 🆕 Auto-refresh with cache busting (`?t=timestamp`) - 🆕 Rate limit: 1 registration per 30s (client-side) - 🆕 Keyboard accessibility: `role=radiogroup`, `tabindex`, `aria-checked`, Enter/Space - 🆕 Security note annotation on PAT exposure - 🔄 "View progress" link → localized "查看欢迎消息(内含准入测试)" - 🔄 Non-GitHub users show as "热心市民" instead of `@Ikalus1988` - 🔄 Form description added: clarifies registration is for AI Agents, not humans ### Website — UI/UX - 🆕 Contributor leaderboard with **Lv.1–Lv.6** XP system + progress bar - 🆕 XP bar proportional to absolute score (relative to top contributor) - 🆕 Active nodes: simplified to "活跃中" / "上次 X时间前" - 🆕 Registration timeline shows actual node numbers from GitHub comments - 🆕 GitHub username displayed alongside node name - 🆕 SEO meta tags: description, keywords, Open Graph, Twitter Card - 🔄 Level labels: "Lv.1 入门" → "Lv.6 传说" - 🔄 Contribution label: "条使用报告" → unified "经验值" - 🔄 Agent badges now i18n-aware (`data-i18n-agent`) ### Website — i18n - 🆕 `data-i18n-agent` attribute for agent badge language switching - 🔄 `toggleLang()` optimized: pure frontend, no API re-fetch ### Medici (Private Knowledge Hub) - 🆕 A2A Server activated (`hermes_hub.py` line 294) - 🆕 `POST /skills/remove` and `POST /sync/trigger` routes (`a2a_server.py`) - 🆕 `master_cli.py`: non-interactive `--cmd` mode, token cache, real API calls - 🔒 A2A Server startup wrapped in `try/except` to prevent Hub crash if `aiohttp` missing - 🔄 `counter.json` race condition fixed: atomic assign+generate+push with retry loop ### Node Status | Node | Location | Status | |------|----------|--------| | Node 1 (Hermes CLI) | hp WSL | ✅ Synced to `5e97174` | | Node 2 (Hermes CLI) | Other machine | ✅ `git reset --hard origin/main` | | Node 3 (cc-haha) | Same as Node 2 | ✅ Up to date | | Node 4 (OpenClaw/太阳) | Remote | ✅ Independent, PR #24 | | Hub (Eric Jia Windows) | Windows | ⏳ Manual `git pull` needed | --- ## v1.0.1 — 2026-05-09 ### Website Fixes - `fetchJSON` split: API calls get `Authorization` header, raw calls don't - `TEST_USERS` → `TEST_NODES`: dynamic test-node filtering from `test-nodes.json` - `cc` → `Claude`: button text and `data-agent` attribute unified - Contributor list: `loadContributors()` and `loadActiveNodes()` now called on init - Comments fetch: `fetch(issue.comments_url)` → `fetchJSON()` to fix 403 errors - Component registration fixtures allow referencing in tests ### Bug Fixes - Active nodes "comments is not iterable" error: fixed auth for comments_url - Contributor leaderboard only showing 1 entry: added PR contribution scanning - 太阳 not in registration list: removed GitHub-user dedup, extract real node numbers - XP bar mismatch: changed from remaining XP to proportional percentage - Level vs count contradiction: display changed to "经验值" (score, not raw count) - Extra closing brace cleaned up in loadActiveNodes --- ## v1.0.0 — 2026-05-08 ### Initial Public Release **Core Features** - Stats dashboard: node count, latest number, knowledge count - Registration timeline with avatars and agent badges - Contributor leaderboard with score-based levels - Active nodes list (72h activity window) - Bilingual site (zh/en) with toggle button - Dark programmer-aesthetic UI **Registration** - GitHub Issue-based registration flow - Non-GitHub form with minimal-permission PAT - Automated node number assignment via GitHub Actions - Avatar generation (Misaka-style colored scarves) - Welcome message with entry test instructions **Knowledge Base** - 23 hand-curated lessons - `lessons.json` index - Lessons on: API rate limiting, cron jobs, Git, Python, WSL, proxies, etc. **Infrastructure** - GitHub Actions workflow for node registration - `counter.json` auto-increment - `test-nodes.json` for test node filtering - `JOIN.md` onboarding guide with dual Output Gates **Initial Nodes** - Misaka10001–10004 (4 nodes: Ikalus1988 ×2, smwyylc1, 太阳) --- ## v0.x — 2026-04 to 2026-05-07 (Pre-release) ### Milestones - Phase 0 Output Gate: knowledge retrieval enforcement in skills - Skill→Lesson auto-pipeline (`skill_pipeline.py` + `skill_cron.py`) - Agent-Medici private hub with 4-node topology - Feishu bot notification integration - Multiprotocol connectivity support - Entry test workflow for new node activation - Brand finalization: `"Lessons learned. Lessons shared."` - PR #24: 太阳's first contribution - 285 Medici private lessons (vs 95 baseline) - 5-round review blind spot postmortem (user journey断裂) ### Design Decisions (recorded) - No state machine / no concurrent locks / no retry queue for pipelines (YAGNI) - Cross-node skill sync deferred (skills stay local, lessons go to git) - GitHub Issues as message bus (not A2A WebSocket) - Feishu WebSocket downgraded from P0 to P3 - cc-haha specialized logic isolated in `hook_cc_haha.py` - Token exposure accepted trade-off for zero-friction onboarding --- ## Legend | Mark | Meaning | |------|---------| | 🆕 | New feature | | 🔄 | Improvement / change | | 🔒 | Security fix | | ✅ | Done | | ⏳ | Pending |