@r1z4x/tezgah 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/CHANGELOG.md +738 -0
  2. package/LICENSE +21 -0
  3. package/MANIFEST +753 -0
  4. package/README.de.md +169 -0
  5. package/README.es.md +168 -0
  6. package/README.fr.md +166 -0
  7. package/README.md +161 -0
  8. package/README.tr.md +163 -0
  9. package/agents/tezgah-reviewer.md +70 -0
  10. package/bin/codegen +337 -0
  11. package/bin/consult +797 -0
  12. package/bin/tezgah-adhd +50 -0
  13. package/bin/tezgah-agents +45 -0
  14. package/bin/tezgah-capture +66 -0
  15. package/bin/tezgah-context +96 -0
  16. package/bin/tezgah-decisions +213 -0
  17. package/bin/tezgah-design +953 -0
  18. package/bin/tezgah-docs +1199 -0
  19. package/bin/tezgah-doctor +497 -0
  20. package/bin/tezgah-dsh +37 -0
  21. package/bin/tezgah-dsh.cmd +70 -0
  22. package/bin/tezgah-gate +75 -0
  23. package/bin/tezgah-import-ai-research +439 -0
  24. package/bin/tezgah-index +32 -0
  25. package/bin/tezgah-lessons +148 -0
  26. package/bin/tezgah-mcp +322 -0
  27. package/bin/tezgah-migrate +324 -0
  28. package/bin/tezgah-pony +50 -0
  29. package/bin/tezgah-research +772 -0
  30. package/bin/tezgah-rollback +93 -0
  31. package/bin/tezgah-route +124 -0
  32. package/bin/tezgah-setup +5798 -0
  33. package/bin/tezgah-status +383 -0
  34. package/bin/tezgah-task +607 -0
  35. package/bin/tezgah-taste +423 -0
  36. package/bin/tezgah-triage +485 -0
  37. package/bin/tezgah.js +36 -0
  38. package/commands/adhd.md +21 -0
  39. package/commands/ponytail.md +21 -0
  40. package/docs/README.md +112 -0
  41. package/docs/architecture.md +226 -0
  42. package/docs/citations-baseline.json +59 -0
  43. package/docs/clarity-baseline.json +116 -0
  44. package/docs/contract.md +416 -0
  45. package/docs/environment.md +141 -0
  46. package/docs/evidence.md +831 -0
  47. package/docs/feature-audit.md +139 -0
  48. package/docs/gate.md +407 -0
  49. package/docs/glossary.md +201 -0
  50. package/docs/hosts.md +400 -0
  51. package/docs/index.json +471 -0
  52. package/docs/judge.md +193 -0
  53. package/docs/layers.md +189 -0
  54. package/docs/models.md +160 -0
  55. package/docs/operations.md +666 -0
  56. package/docs/research.md +809 -0
  57. package/docs/results/paired-outcome-2026-10.jsonl +254 -0
  58. package/docs/results/paired-outcome-2026-10.md +204 -0
  59. package/docs/skills.md +236 -0
  60. package/docs/status-line.md +315 -0
  61. package/docs/testing.md +287 -0
  62. package/docs/vision.md +117 -0
  63. package/hooks/hooks.json +33 -0
  64. package/hooks/projects-auto-init.py +98 -0
  65. package/hooks/projects-posttooluse.py +149 -0
  66. package/hooks/projects-pretooluse.py +40 -0
  67. package/hooks/projects-stop.py +60 -0
  68. package/hooks/tezgah_agents.py +817 -0
  69. package/hooks/tezgah_apps.py +266 -0
  70. package/hooks/tezgah_attest.py +255 -0
  71. package/hooks/tezgah_clarity.py +171 -0
  72. package/hooks/tezgah_components.py +140 -0
  73. package/hooks/tezgah_context.py +2953 -0
  74. package/hooks/tezgah_embed.py +765 -0
  75. package/hooks/tezgah_gate.py +2736 -0
  76. package/hooks/tezgah_guard.py +177 -0
  77. package/hooks/tezgah_index.py +124 -0
  78. package/hooks/tezgah_integrity.py +5141 -0
  79. package/hooks/tezgah_judge.py +487 -0
  80. package/hooks/tezgah_lang.py +230 -0
  81. package/hooks/tezgah_lessons.py +210 -0
  82. package/hooks/tezgah_models.py +855 -0
  83. package/hooks/tezgah_paths.py +1132 -0
  84. package/hooks/tezgah_policy.py +1039 -0
  85. package/hooks/tezgah_rank.py +77 -0
  86. package/hooks/tezgah_replay.py +1109 -0
  87. package/hooks/tezgah_research.py +5176 -0
  88. package/hooks/tezgah_shapes.py +305 -0
  89. package/hooks/tezgah_skill_pick.py +227 -0
  90. package/hooks/tezgah_snapshot.py +490 -0
  91. package/hooks/tezgah_stopspec.py +320 -0
  92. package/hooks/tezgah_task.py +458 -0
  93. package/hooks/tezgah_taste.py +201 -0
  94. package/hooks/tezgah_untrusted.py +112 -0
  95. package/hooks/tezgah_update.py +430 -0
  96. package/hosts/codex/hook.py +268 -0
  97. package/hosts/codex/hooks.json +26 -0
  98. package/hosts/cursor/hook.py +461 -0
  99. package/hosts/cursor/hooks.json +44 -0
  100. package/hosts/dsh/hooks.json +21 -0
  101. package/hosts/dsh/statusline/lib/client.js +138 -0
  102. package/hosts/dsh/statusline/lib/index.js +104 -0
  103. package/hosts/dsh/statusline/package.json +28 -0
  104. package/hosts/omp/hook.py +277 -0
  105. package/hosts/omp/tezgah-hook.ts.in +701 -0
  106. package/hosts/opencode/plugins/tezgah.js +2742 -0
  107. package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
  108. package/output-styles/tezgah.md +142 -0
  109. package/package.json +32 -0
  110. package/packaging/build.sh +342 -0
  111. package/packaging/install.ps1 +166 -0
  112. package/packaging/install.sh +56 -0
  113. package/packaging/upgrade.sh +142 -0
  114. package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
  115. package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
  116. package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
  117. package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
  118. package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
  119. package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
  120. package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
  121. package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
  122. package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
  123. package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
  124. package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
  125. package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
  126. package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
  127. package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
  128. package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
  129. package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
  130. package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
  131. package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
  132. package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
  133. package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
  134. package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
  135. package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
  136. package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
  137. package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
  138. package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
  139. package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
  140. package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
  141. package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
  142. package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
  143. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
  144. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
  145. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
  146. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
  147. package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
  148. package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
  149. package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
  150. package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
  151. package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
  152. package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
  153. package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
  154. package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
  155. package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
  156. package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
  157. package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
  158. package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
  159. package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
  160. package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
  161. package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
  162. package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
  163. package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
  164. package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
  165. package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
  166. package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
  167. package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
  168. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
  169. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
  170. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
  171. package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
  172. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
  173. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
  174. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
  175. package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
  176. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
  177. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
  178. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
  179. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
  180. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
  181. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
  182. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
  183. package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
  184. package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
  185. package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
  186. package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
  187. package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
  188. package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
  189. package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
  190. package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
  191. package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
  192. package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
  193. package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
  194. package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
  195. package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
  196. package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
  197. package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
  198. package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
  199. package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
  200. package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
  201. package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
  202. package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
  203. package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
  204. package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
  205. package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
  206. package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
  207. package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
  208. package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
  209. package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
  210. package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
  211. package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
  212. package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
  213. package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
  214. package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
  215. package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
  216. package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
  217. package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
  218. package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
  219. package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
  220. package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
  221. package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
  222. package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
  223. package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
  224. package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
  225. package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
  226. package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
  227. package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
  228. package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
  229. package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
  230. package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
  231. package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
  232. package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
  233. package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
  234. package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
  235. package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
  236. package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
  237. package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
  238. package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
  239. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
  240. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
  241. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
  242. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
  243. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
  244. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
  245. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
  246. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
  247. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
  248. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
  249. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
  250. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
  251. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
  252. package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
  253. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
  254. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
  255. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
  256. package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
  257. package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
  258. package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
  259. package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
  260. package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
  261. package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
  262. package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
  263. package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
  264. package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
  265. package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
  266. package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
  267. package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
  268. package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
  269. package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
  270. package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
  271. package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
  272. package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
  273. package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
  274. package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
  275. package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
  276. package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
  277. package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
  278. package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
  279. package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
  280. package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
  281. package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
  282. package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
  283. package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
  284. package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
  285. package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
  286. package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
  287. package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
  288. package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
  289. package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
  290. package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
  291. package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
  292. package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
  293. package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
  294. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
  295. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
  296. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
  297. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
  298. package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
  299. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
  300. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
  301. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
  302. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
  303. package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
  304. package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
  305. package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
  306. package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
  307. package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
  308. package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
  309. package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
  310. package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
  311. package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
  312. package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
  313. package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
  314. package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
  315. package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
  316. package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
  317. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
  318. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
  319. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
  320. package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
  321. package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
  322. package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
  323. package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
  324. package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
  325. package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
  326. package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
  327. package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
  328. package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
  329. package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
  330. package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
  331. package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
  332. package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
  333. package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
  334. package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
  335. package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
  336. package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
  337. package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
  338. package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
  339. package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
  340. package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
  341. package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
  342. package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
  343. package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
  344. package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
  345. package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
  346. package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
  347. package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
  348. package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
  349. package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
  350. package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
  351. package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
  352. package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
  353. package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
  354. package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
  355. package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
  356. package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
  357. package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
  358. package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
  359. package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
  360. package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
  361. package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
  362. package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
  363. package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
  364. package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
  365. package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
  366. package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
  367. package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
  368. package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
  369. package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
  370. package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
  371. package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
  372. package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
  373. package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
  374. package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
  375. package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
  376. package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
  377. package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
  378. package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
  379. package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
  380. package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
  381. package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
  382. package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
  383. package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
  384. package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
  385. package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
  386. package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
  387. package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
  388. package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
  389. package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
  390. package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
  391. package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
  392. package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
  393. package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
  394. package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
  395. package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
  396. package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
  397. package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
  398. package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
  399. package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
  400. package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
  401. package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
  402. package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
  403. package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
  404. package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
  405. package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
  406. package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
  407. package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
  408. package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
  409. package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
  410. package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
  411. package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
  412. package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
  413. package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
  414. package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
  415. package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
  416. package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
  417. package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
  418. package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
  419. package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
  420. package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
  421. package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
  422. package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
  423. package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
  424. package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
  425. package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
  426. package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
  427. package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
  428. package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
  429. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
  430. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
  431. package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
  432. package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
  433. package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
  434. package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
  435. package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
  436. package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
  437. package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
  438. package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
  439. package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
  440. package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
  441. package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
  442. package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
  443. package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
  444. package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
  445. package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
  446. package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
  447. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
  448. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
  449. package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
  450. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
  451. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
  452. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
  453. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
  454. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
  455. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
  456. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
  457. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
  458. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
  459. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
  460. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
  461. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
  462. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
  463. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
  464. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
  465. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
  466. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
  467. package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
  468. package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
  469. package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
  470. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
  471. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
  472. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
  473. package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
  474. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
  475. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
  476. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
  477. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
  478. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
  479. package/skills/ai-research/SKILL.md +101 -0
  480. package/skills/ai-research/SOURCE +38 -0
  481. package/skills/ai-research/index/1-frame.md +18 -0
  482. package/skills/ai-research/index/2-data.md +21 -0
  483. package/skills/ai-research/index/3-train.md +48 -0
  484. package/skills/ai-research/index/4-measure.md +25 -0
  485. package/skills/ai-research/index/5-run.md +23 -0
  486. package/skills/ai-research/index/6-write.md +35 -0
  487. package/skills/ai-research/library.json +3456 -0
  488. package/skills/analyze-app/EVALS.md +82 -0
  489. package/skills/analyze-app/SKILL.md +188 -0
  490. package/skills/design-contract/EVALS.md +80 -0
  491. package/skills/design-contract/SKILL.md +171 -0
  492. package/skills/design-library/EVALS.md +85 -0
  493. package/skills/design-library/INDEX.md +59 -0
  494. package/skills/design-library/SKILL.md +58 -0
  495. package/skills/design-library/SOURCE +131 -0
  496. package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
  497. package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
  498. package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
  499. package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
  500. package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
  501. package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
  502. package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
  503. package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
  504. package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
  505. package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
  506. package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
  507. package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
  508. package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
  509. package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
  510. package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
  511. package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
  512. package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
  513. package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
  514. package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
  515. package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
  516. package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
  517. package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
  518. package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
  519. package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
  520. package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
  521. package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
  522. package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
  523. package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
  524. package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
  525. package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
  526. package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
  527. package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
  528. package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
  529. package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
  530. package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
  531. package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
  532. package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
  533. package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
  534. package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
  535. package/skills/feature-audit/EVALS.md +83 -0
  536. package/skills/feature-audit/SKILL.md +326 -0
  537. package/skills/harness/EVALS.md +81 -0
  538. package/skills/harness/SKILL.md +88 -0
  539. package/skills/i-have-adhd/EVALS.md +80 -0
  540. package/skills/i-have-adhd/SKILL.md +183 -0
  541. package/skills/no-ai-slop/EVALS.md +89 -0
  542. package/skills/no-ai-slop/SKILL.md +209 -0
  543. package/skills/no-ai-slop/eval.md +52 -0
  544. package/skills/plan-add/EVALS.md +79 -0
  545. package/skills/plan-add/SKILL.md +179 -0
  546. package/skills/plan-add/render_table.py +72 -0
  547. package/skills/plan-status/EVALS.md +78 -0
  548. package/skills/plan-status/SKILL.md +52 -0
  549. package/skills/plan-sync/EVALS.md +80 -0
  550. package/skills/plan-sync/SKILL.md +69 -0
  551. package/skills/pm-frameworks/SKILL.md +33 -0
  552. package/skills/pm-frameworks/SOURCE +39 -0
  553. package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
  554. package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
  555. package/skills/ponytail/EVALS.md +80 -0
  556. package/skills/ponytail/SKILL.md +124 -0
  557. package/skills/product-analysis/EVALS.md +103 -0
  558. package/skills/product-analysis/SKILL.md +361 -0
  559. package/skills/research/EVALS.md +104 -0
  560. package/skills/research/SKILL.md +570 -0
  561. package/skills/rl-env/SKILL.md +53 -0
  562. package/skills/rl-env/SOURCE +41 -0
  563. package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
  564. package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
  565. package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
  566. package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
  567. package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
  568. package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
  569. package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
  570. package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
  571. package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
  572. package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
  573. package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
  574. package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
  575. package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
  576. package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
  577. package/skills/tezgah-contract/EVALS.md +78 -0
  578. package/skills/tezgah-contract/SKILL.md +792 -0
  579. package/statusline.py +129 -0
  580. package/workflows/graph-impact.js +153 -0
  581. package/workflows/graph-map.js +158 -0
  582. package/workflows/graph-review.js +170 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,738 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here. The format is based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
+ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [1.0.0] - 2026-10-07
10
+
11
+ ### Upgrade note
12
+
13
+ - **1.0.0 starts the public line, and npm keeps no 0.x.** The registry no
14
+ longer serves 0.1.1, 0.1.2 or 0.33.0, nor the pre-reset 0.17.0-0.32.0. The
15
+ update check treats every 0.x install as older than 1.0.0
16
+ (`hooks/tezgah_update.py::RETIRED`), so the `↑` chip and `tezgah update` move
17
+ it to 1.0.0. A 0.x install from npm moves with `npm install -g @r1z4x/tezgah`.
18
+ - **Homebrew users coming from 0.1.2: re-arm once after `brew upgrade`.**
19
+ 0.1.2 armed the host hooks with paths into its own keg,
20
+ `Cellar/tezgah/0.1.2/libexec`. The upgrade's default cleanup deletes that
21
+ keg, so those hooks point at nothing until a re-arm. Run `tezgah update`.
22
+ On the brew channel it runs `brew upgrade` first. Then it re-arms the hosts
23
+ and roots this install recorded, from the new tree behind `opt/tezgah`.
24
+ 0.1.2's `tezgah update` already re-arms from there too. Or re-arm by hand with
25
+ `tezgah-setup --install --hosts <the hosts you armed>`. 1.0.0 arms through
26
+ `opt/tezgah`, so later upgrades need no re-arm. The formula's caveats say
27
+ the same after `brew upgrade`.
28
+
29
+ ### Added
30
+
31
+ - **An orphan pass no longer licenses a claim.** Every ledger reader now
32
+ pairs each `verify_ok` with the `began` row the gate wrote for its call.
33
+ A pass with none is an orphan: it came from outside the hooks
34
+ (`python3 -c`), or its call's rows went missing. No reader counts it as a
35
+ pass. The Stop rule refuses a done-claim in its turn as "evidence tampered",
36
+ and `counters.orphans` counts it. Five cases stay exempt: a session with no
37
+ `began` row, a turn with a `crash` row, `pretooluse-off`, an unlocked append
38
+ and the sandbox fallback cache. A forged `began` row plus its pass is the
39
+ residual `SECURITY.md` names (plan 051). The gate now writes a call's
40
+ `began` before its rules run, so a refused call leaves `began` and `deny`.
41
+ Codex's PreToolUse matcher now names `shell` and `Shell` too.
42
+ - **The session latches its kill switches.** A switch file newer than the
43
+ session's first ledger row (ctime or mtime) no longer disarms that session.
44
+ `off()` ignores it until the user's prompt names it, which writes an
45
+ `authorized` row. A switch present before the session starts counts as
46
+ before. So does the stand-down `tezgah-setup --uninstall --full` writes into
47
+ `pretooluse-off`. The opencode plugin answers the same way. A switch the user
48
+ flips in their own terminal mid-session now waits for the next session or a
49
+ prompt that names it (plan 051, SECURITY.md).
50
+ - **The arm-bench lab is back in the repository.** `benchmarks/arm-bench/` holds
51
+ the runner, the 49 task trees and the earlier pre-registrations, with every
52
+ home path redacted. It is a maintainer tool: `managed()` keeps it out of host
53
+ plugin trees and the MANIFEST. Plan 062's phase 1 adds arm HOMEs built out of
54
+ tree from one pinned commit (`homes.py`) and a fresh HOME per run. It adds the
55
+ unlock strip that defines the switch-paragraph arm (`unlocks.py`) and a cheat
56
+ classifier over the final diff that uses the gate's own patterns. The report
57
+ adds paired bootstrap intervals, exact McNemar and Holm. `bench.py selftest`
58
+ now also fails when an arm's prompt text names a task's hidden identifier.
59
+ - **A tainted lesson gets a label, never a refusal.**
60
+ Untrusted text is a web, MCP, network, tier or subagent read. A write to
61
+ `.tezgah/lessons.md` after one in the same user turn now leaves one
62
+ `lesson_tainted` row per line it adds
63
+ (`docs/evidence.md`). The line still rides both lesson blocks, behind a
64
+ per-line data label (ADR 010). The ledger now has one reader,
65
+ `hooks/tezgah_lessons.py`, for the context, the gate and `tezgah-lessons`.
66
+ It cuts a `|| check: ...` clause and an `@<sha> <path>` stamp off each line.
67
+ Neither changes the key, the per-turn digest, the cut or the ranking.
68
+ - **A model can be the replay sheet's second rater.** `tezgah-gate replay
69
+ --label-model --prompt <file>` sends each blind sheet row, redacted, to the
70
+ judge seam. It writes `labels-model.jsonl` beside the sheet and prints the
71
+ token cost. `replay --report` with one rater's labels now prints no rate:
72
+ the rates need two raters' agreed labels.
73
+ - **A second model family can rate the replay sheet.** `tezgah-gate replay
74
+ --label-model --provider deepseek --model deepseek-v4-pro` asks the same
75
+ prompt over DeepSeek's OpenAI-compatible endpoint at temperature 0. It writes
76
+ `labels-deepseek.jsonl` and prints input and output token cost. With two
77
+ model raters `replay --report` calls kappa model-model agreement.
78
+ - **The shell-reader fuzzer runs weekly under bash 5.x.** A `fuzz-shell` job
79
+ in `.github/workflows/neuter.yml` runs `tests/fuzz_shell.py` on the ubuntu
80
+ runner's bash 5, seed 1, 20000 lines. It reads the lines once with the core
81
+ readers and once with the opencode plugin's ports (`--js`). The new
82
+ `--strict` flag makes any disagreement class exit 1, so the job fails on it.
83
+ - **`tezgah-status --enforcers` shows what enforces each always-on rule.**
84
+ Each CORE rule gets one row. The row names the gate rules and Stop classes
85
+ that refuse on the rule, with the switches and conditions that guard each.
86
+ It also names the shape flags that only record it. A rule reads `partial` when
87
+ every refusal can vanish while its text stays, or when `docs/contract.md`
88
+ names a part nothing covers. The report always exits 0.
89
+ `bin/tezgah-docs --citations` and `tests/test_enforcers.py` fail on a rule
90
+ that nothing refuses on and that has no row in `docs/contract.md`.
91
+ - **An MCP effect now meets the gate's content rules**. Claude, dsh and omp
92
+ spawn the gate for an MCP tool whose name carries an effect verb, so a
93
+ read-only MCP call costs nothing. Cursor's `beforeMCPExecution` asks the
94
+ gate. An effect verb in the tool's name picks the rules, case-sensitive like
95
+ the host matcher. A clause led by a read verb (`get_commit`) is a read. A
96
+ `write` meets shortcut, attribution and secret. A `publish` meets attribution
97
+ and secret. No class refuses by itself. The secret half reads vendor token
98
+ shapes only. The payload walk stops at 64 KiB. An MCP effect also counts for
99
+ the taint notice, one notice per untrusted channel, and for the drift
100
+ re-statement. So an MCP `act` such as a click can now draw that re-statement
101
+ once per long turn.
102
+ - **The Stop rule's evidence fold, declared as a temporal spec, runs in
103
+ shadow.** `hooks/tezgah_stopspec.py` writes classes 5-10 as seven past-time
104
+ formulas over ten row atoms. A one-pass monitor judges each reply that
105
+ leaves a claim or a refusal row. It runs beside the imperative fold and
106
+ leaves one `stop_spec` row: `agree`, `disagree` or `error`. The row also
107
+ says `fold` or `selector`: whether the shared selector reached the fold.
108
+ The verdict stays the imperative one, and a failing spec costs only its row.
109
+ `mask` keeps a per-process cache, so both folds read each ledger detail once.
110
+ `TEZGAH_STOPSPEC_STRICT=1` makes a disagreement fatal in the tests.
111
+ `tests/stop_spec_eval.py` measures the bet (plan 063). Plan 055 replays 496
112
+ Stop events, and the two folds agree on all of them. The bar reads only the
113
+ 361 events that reached the fold.
114
+ - **Real bash now checks the shell readers.** `tests/fuzz_shell.py`
115
+ draws seeded lines from the hand vectors' grammar. It runs each in `bash`
116
+ with a stub per program word and prints each class where `shell_programs` or
117
+ `mask` disagrees. `tests/test_fuzz_shell.py` runs a small sample per suite
118
+ run and fails if `mask` blanks a program bash ran. `--js` reads the same
119
+ lines with the opencode plugin's ports through node. It reports where a port
120
+ disagrees with bash or with the core, and the suite sample fails on either.
121
+ - **`tests/bench_gate_latency.py` times the gate.** It prints p50/p95 of
122
+ `decision(..., record=False)` over 200 common calls, for this tree or for
123
+ another revision's exported `hooks/`.
124
+ - **Concluding or closing a research line seals it.** `conclude` and `close`
125
+ write `state.json` `order_seal`. It holds, per experiment, the sha256 of
126
+ `protocol.md` and `results.jsonl`, and no order verdict. Every `check`
127
+ verifies the hashes, with or without git, so the session note reports an
128
+ edit after the seal. While the hashes hold, `check` re-derives the order, so
129
+ results committed after the close still count. `tezgah-research seal <slug>
130
+ --history-lost --ack "<decision>"` gives the owner's `history-lost` verdict
131
+ to a line concluded before seals (ADR 009). It covers only an order the lost
132
+ history left undecidable. A real violation stays an error. Without
133
+ `--history-lost` (ADR 018) it writes the plain seal `conclude` would, and
134
+ only when every experiment's order still checks.
135
+ - **`tezgah-research import <checkout> [<slug>]` moves a line with its
136
+ history.** It fetches the other checkout's `.tezgah` repository from disk.
137
+ It merges that history as a second parent and takes only the imported lines.
138
+ It refuses a plain copy, because a copy loses the order proof. It needs no
139
+ remote. An open line arrives beside open ones only with `--allow-open`.
140
+ - **The MCP tool `tezgah_research_check` takes a `slug`.** The server checks it
141
+ as a line name. It passes the slug after `--`, so `tezgah-research` never
142
+ reads it as a flag.
143
+ - **The neuter matrix mutates the Stop rule.** `tests/neuter_matrix.py`
144
+ generates one mutant per Stop-class return site. The sites sit in
145
+ `_stop_block`, `_shape_block` and `_evidence_block`: 13 over 11 classes. Hand-written rows add the
146
+ guards around them: the pass predicate, the empty-run read, the pipe
147
+ guard and the "doğrulanmadı" clear. The lost call, the bookkeeping and
148
+ idle-turn fallbacks, the refusal row and the `other repo` cause are rows
149
+ too. The run adds the omp and after-block Stop test modules.
150
+ - **Every session attests tezgah's own hook entries.** The installer now
151
+ records each host's tezgah-owned hook entries in `contract.sha256`, one line
152
+ per entry. On a release install it also records the scripts they run. Each
153
+ session start compares the entries on disk with that record. opencode does
154
+ it at its first message. The session gets one `attest` row: `ok`,
155
+ `drifted: <entries>` or `unverified: <why>`. A drifted row names the entry.
156
+ It also names a hook file any user can write and a stale omp bridge. The row
157
+ lists the kill switches present. A drifted session shows a `drift` status
158
+ mark, and its claim rows carry the drift in `harness`. Drift never blocks a
159
+ reply. `--report` prints the same comparison per host.
160
+ - **`tezgah update` shows the hook change.** It prints each tezgah hook entry
161
+ the new release adds, removes or changes. That comes before the re-arm. On
162
+ a terminal it waits for a yes. A piped update goes on (decision 12).
163
+ `--upgrade` does the same. The new tree answers through
164
+ `tezgah-setup --hook-entries`.
165
+ - **`upgrade.sh` checks build provenance when `gh` is there.** It runs
166
+ `gh attestation verify` on the tarball against the release workflow's
167
+ attestation. Without `gh` it prints `provenance not checked`, and a `gh`
168
+ that cannot answer is a warning. The checksum stays the gate.
169
+ - **`docs/hosts.md` states each host's enforcement capability.** One table
170
+ covers the gate, the Stop rule and subagents per host, in gate, observe,
171
+ partial and unavailable. A cell no driver can probe says unverified.
172
+ - **`tezgah-gate replay` measures the gate against its own history.** It
173
+ replays this machine's real ledgers through the unmodified dry-run gate and
174
+ the Stop rule. It runs in a sandbox HOME, with the clock frozen at each call.
175
+ It prints the corpus size, the join rate and every exclusion with its count.
176
+ Per stratum, it prints how often the replayed verdict equals the recorded
177
+ one. Every figure names its cutoff. `replay --sheet` draws a blind label
178
+ sample that shows no verdict. `replay --report --labels <file>` turns two
179
+ raters' labels into per-rule false-block rates and Stop error rates. Each
180
+ rate carries a Wilson 95% interval, and the report adds Cohen's kappa. It
181
+ also folds the denial budget: runs of 3 consecutive denies per rule in one
182
+ turn, and sessions with 20 or more. Nothing leaves `~/.cache/tezgah/replay`,
183
+ and no gate behaviour changes. `tezgah-taste`'s transcript walkers can now
184
+ read subagent files and tool inputs. `mine` reads what it read before.
185
+ - **`--install` arms Claude Code through its own CLI.** Claude's gate, Stop and
186
+ ledger hooks ship in the plugin. The installer never registered that plugin,
187
+ so only the maintainer's machine had them. The install now
188
+ writes `.claude-plugin/{plugin,marketplace}.json` from the release version
189
+ into its own tree. The pair stays untracked. It then runs `claude plugin
190
+ marketplace add <tree>` and `claude plugin install tezgah@tezgah-local`. An
191
+ existing `tezgah@*` row is left alone, so no hook fires twice. Claude's
192
+ `plugin copy current` row now fails `--install` where a `claude` CLI exists.
193
+ `--uninstall` also drops the `enabledPlugins` key and the rendered pair.
194
+ - **`--report --live` proves the gate runs.** Each host now also gets one
195
+ PreToolUse for `git commit --no-verify -m x` through its own wiring. The row
196
+ is ok only when the host answers with its own deny and the ledger gains a
197
+ deny row. `pretooluse-off` and `verify-off` make it UNVERIFIED, named. The omp
198
+ bridge must match a fresh render byte for byte. opencode's plugin now writes
199
+ a deny row for its own refusals. The Python gate already did.
200
+ - **`reply_lang` picks the reply language.** `tezgah-setup --install
201
+ --reply-lang tr|en|any` stores it in `config.json`, and `install.sh` forwards
202
+ the flag. `tr` is the default and what an install without the key reads. `en`
203
+ asks for English and `any` for the user's language. The Stop rule checks
204
+ the language only under `tr`. The contract's first rule and
205
+ the per-turn reminder name the configured language.
206
+ - **README: what tezgah changes on your machine**, in all five languages.
207
+ - **The gate guards tezgah's own control plane (`control`).** It refuses a
208
+ change to a kill switch. It covers `~/.config/tezgah`, the evidence ledger
209
+ and the hook wiring too. It also refuses a change to a repository's `.no-*`
210
+ mark or `.git/hooks`. It
211
+ refuses a delete or move of `.husky` or of an open plan. It refuses a
212
+ forced `git add` of a `.tezgah/` path, and the CLIs that change that state.
213
+ Claude's `disableAllHooks` and Codex's hook trust entries count as wiring.
214
+ The rule follows a `cd`, `if`/`for`/`!`, `eval` and `bash -lc`. It refuses a
215
+ write through a link and a delete of a directory that holds this state.
216
+ Only `pretooluse-off` removes the rule, and the refusal names no command.
217
+ All 12 tamper probes of the deep analysis passed the gate before. Now the
218
+ gate refuses all 12. ADR 010 freezes new gate rules, and ADR 004 makes this
219
+ one the exception: it ships this half of R05 (R05a) now. An interpreter
220
+ (`python3 -c`) still gets through. `SECURITY.md` names it as a residual.
221
+ - **A damaged ledger line blocks a done-claim.** A bad ledger line used to
222
+ make the reader raise. The Stop rule then failed open for the turn. The new
223
+ Stop class is "evidence tampered". Now the reader
224
+ skips the line and writes one `ledger_damage` row for it. The Stop rule
225
+ refuses a done or tested claim in that turn. That covers a corrupted
226
+ `verify_fail` row too.
227
+ - **A switch armed mid-session leaves a record.** The prompt hook writes one
228
+ `disarm` row for a switch that appears after the session's first prompt.
229
+ The status line shows its `gate✗` mark while that switch stays armed.
230
+ - **Subagents stop sharing taint on Claude.** Claude's hook payload names the
231
+ subagent (`agent_id`), and its rows now carry it. One sibling's web read no
232
+ longer marks another sibling's effects. The repeat ceilings count each
233
+ agent's own attempts.
234
+ - **`SECURITY.md` states the threat model.** It names a cooperative but
235
+ fallible agent, the state the gate guards and how, and the residual routes.
236
+ - **The control rule also guards the attestation state.** It refuses a
237
+ change to the `harness-drift/` and `import-crash/` status marks and a
238
+ `tezgah-context attest` run. The `hook:<host>:...` rows of `contract.sha256`
239
+ were already covered as tezgah's configuration, and a test now pins them.
240
+
241
+ - **Opt-in taste capture, and a miner for the corrections already on disk.**
242
+ Arm it with `~/.config/tezgah/taste-on`. A repository with a `.tezgah/`
243
+ directory then gets `.tezgah/taste/signals.jsonl`. It holds each prompt,
244
+ each landed edit's old and new text, and a snapshot of the bytes the write
245
+ left. Redaction and a length cut apply to the text. A `.no-taste` mark turns it off per
246
+ repository. `tezgah-taste mine` counts and extracts the prompts that
247
+ followed a writing turn in omp and Claude transcripts. `tezgah-taste
248
+ measure` and `tezgah-taste rate` sort them with the judge seam into
249
+ preference, defect or none. This phase learns and injects nothing.
250
+
251
+ - **The Stop hook now records the reply after a block.** On Claude, Codex and
252
+ omp the hook skipped the reply that answers a block. It now judges that
253
+ reply in record-only mode and writes one `after_block` row. The row says
254
+ whether the rule would refuse the reply, let a claim through, or found no
255
+ claim. It never blocks a second time and never counts as a claim or as a
256
+ reply. A block from another Stop hook leaves no row. Cursor stays unwired:
257
+ nobody has checked its stop payload yet.
258
+ - **A subagent's end leaves a record-only verdict.** Claude's SubagentStop
259
+ (a new hook row) and Cursor's subagentStop now judge the subagent's last
260
+ reply. They read the evidence half of the Stop rule and write one
261
+ `subagent_end`
262
+ row. It never blocks and never counts as a claim. Every Stop adapter names
263
+ its re-ask budget as `STOP_REASKS = 1`. On Claude a subagent's tool rows
264
+ still sit in the parent's ledger, so the row judges the parent's turn until
265
+ the agent key lands.
266
+ - **Lessons keep their rule when injected.** A lesson line is now written rule
267
+ first: `<rule> - <incident>`. The rule sits in the first 120 characters, so
268
+ the 200-character cut keeps it. The session block says how many of its lines
269
+ do not open with their rule. A line ending `|| enforced_by: <rule|test>` leaves
270
+ the injected blocks while that gate rule or test is on. A test counts only
271
+ while the repository still defines it. A switched-off rule brings the line
272
+ back. `tezgah-lessons` proposes rule-first rewrites, merges of duplicate lines
273
+ and those retirements. It never writes the ledger. On this repository's
274
+ 47-line ledger the session block grows from 1266 to 1352 bytes. omp's
275
+ `RULES.md` lessons line grows from 230 to 270 bytes. The always-on core
276
+ shrinks by 23 bytes.
277
+ - **The per-turn lessons block shrinks before the budget drops it.** Over budget
278
+ it keeps its first lesson. The session remembers only the lessons it shows. The
279
+ drop log records this as `kind=truncated`. Each injected lesson leaves a
280
+ `lesson` ledger row with its key and block, and that row is not gate evidence.
281
+ - **A wider citation audit.** `bin/tezgah-docs --citations` now judges a bare file
282
+ name and a symbol written after its citation. It also reads the comments and docstrings of the Python code. A
283
+ `path:N` it cannot read counts as unjudged. The tree reads 524 judged and 1022
284
+ unjudged, up from 429 judged. A file whose unjudged count is above or below its
285
+ entry in `docs/citations-baseline.json` fails the check. `--citations --update`
286
+ rewrites that file. The same pass reads all ten Stop classes by AST. It also checks the
287
+ gate's rule order and switches, the judge's callers and the kill-switch names.
288
+ `tests/neuter_matrix.py` generates one mutant per gate rule.
289
+ - **`tezgah-setup --write-plugin-agents`.** The plugin's `agents/tezgah-reviewer.md`
290
+ is now rendered from the same role body the per-repo reviewer gets. A test
291
+ fails until the flag has run after a body change.
292
+ - **The status line says when a newer release is out, and `tezgah update`
293
+ takes it.** A `↑X.Y.Z` chip sits beside the logo on every surface. A redraw
294
+ reads a cached answer, and a detached check refreshes it at most once a day.
295
+ `tezgah update [--dry-run]` updates through the channel the install came
296
+ from (release prefix, Homebrew, npm or git) and re-arms the hosts. The
297
+ `update-check-off` switch turns the check and the chip off.
298
+
299
+ ### Changed
300
+
301
+ - **The README describes mechanisms, not outcomes.** A paired on/off experiment
302
+ ran DeepSeek V4.1 Flash on omp, bare against a full install. It found no
303
+ measurable reduction in cheating. The model barely cheated in either arm: 0
304
+ of 132 runs with tezgah and 1 of 131 without, on ImpossibleBench's
305
+ conflicting SWE-bench split. Hand labels of the final messages found no
306
+ false-done difference either: 3 of 30 with tezgah, 6 of 30 without. The
307
+ Stop rule's claim reader flagged far more, because it reads `doğrulandı` on
308
+ a partial fix as a done claim. That weakness stays open for now. The
309
+ README, `docs/vision.md` and `docs/evidence.md` now say what tezgah enforces
310
+ and records, and what it has not shown. The redacted results bundle is
311
+ `docs/results/paired-outcome-2026-10.md`, with per-task counts beside it.
312
+ - **An open plan's move and a forced add of `.tezgah/` leave evidence.** The
313
+ `control` rule refused a delete or move under `.tezgah/plans/open/`. It also
314
+ refused a `git add -f` of a `.tezgah/` path. Plan 050's replay of real
315
+ ledgers found both refused without the user's say-so. That happened more
316
+ than once a week, so its falsifier fired (ADR 018). A call that moves or
317
+ deletes one plan, or force-adds a `.tezgah/` path, now passes and leaves a
318
+ `disarm` row, `control: <what>`. The rule still refuses the open plans'
319
+ directory and its ancestors, and a call that also changes another protected
320
+ path.
321
+ - **The research session note hashes a line under `done/`.** `failing()` runs
322
+ `_check_seal` on a concluded or closed line instead of the full `check_line`.
323
+ An edit after the seal still reaches the note. The line's other findings stay
324
+ with `check <slug>` and `check --all-lines`. On a copy of this repository's
325
+ workspace the note took 0.014 s instead of 0.67 s.
326
+ - **The no-slug research `check` and `status` report the open lines.** They
327
+ read a line under `done/` by its seal hashes, as the session note does. A
328
+ `state.json` or a seal they cannot read fails the line. One line counts the
329
+ done lines that carry a seal and those that do not. `check --all-lines`
330
+ re-checks every line in full, and `check <slug>` still does for that line
331
+ (ADR 015).
332
+ - **The research history bridge is gone.** Nothing reads
333
+ `.tezgah/history-bridge.json` any more. It proved no experiment on this
334
+ repository's workspace, so `check` refuses a re-rooted one-commit add like
335
+ any other. Its code, its `notes` channel in the `check` report and its tests
336
+ went with it (ADR 015).
337
+ - **The piped-check remedy is one sentence.** `PIPED_REMEDY` in
338
+ `hooks/tezgah_integrity.py` holds it. The refusal, the always-on core, its
339
+ hookless copy, the contract skill and `docs/gate.md` quote it word for word.
340
+ A test pins every copy. It names the two shapes that keep the check's exit
341
+ status. One runs the check last into a file and reads the file in a separate
342
+ call. The other opens the line with `set -o pipefail;`.
343
+ - **A session pays each armed rule once.** The first matching prompt gets the
344
+ full paragraph of spec, consult, research, product or graph. A later match in
345
+ the same session gets one line that names the rule. The research line keeps
346
+ its open-lines fact. A compaction brings the full paragraph back. So does a
347
+ match 20 turns after the last full showing, for Cursor and dsh. The per-turn
348
+ reminder no longer restates spec, graph or research. Those rules reach a turn
349
+ through their own paragraph. It keeps the short consult clause, because a
350
+ terse irreversible ask arms nothing. The `user_prompt` budget now drops the
351
+ skill hint before the task phase, the delta and the pointer. A replay of
352
+ 1,452 uncut real prompts from 85 local sessions ran through `context_for` in
353
+ a fixture repo. Injected bytes per session fell from 37,387 B to 28,928 B
354
+ (-22.6%). Per turn they fell from 1,599 B to 1,104 B. The Stop-shape and
355
+ claim-rate comparison needs a 2-week window and has no result yet.
356
+ - **The subagent brief keeps each rule's operative sentence.** The brief kept
357
+ only each rule's first sentence. A delegate lost "inter-agent reports stay
358
+ English" and the lessons instruction. A per-rule sentence count now keeps two
359
+ sentences of three rules, cut from CORE's own text. The brief grows from
360
+ 4,120 B to 4,263 B. The `subagent_start` budget moves from 5,000 B to 5,500 B.
361
+ - **User constraints survive compaction.** A prompt clause like "don't touch
362
+ hooks.json" or "README'ye dokunma" now rides the turn stamp, to its
363
+ sentence's end. The stamp holds that clause, never the prompt. A clause that
364
+ starts inside quotes or code does not count. The recogniser skips a prompt
365
+ over 12,000 characters: pasted material is not the user's constraint.
366
+ A quoted object after a plain "don't touch" still counts. The post-compact and
367
+ session-start blocks restate the clause. The compaction row counts its object
368
+ phrase in `constraint_found`. On the 1,452 uncut real prompts the recogniser
369
+ pinned 7 clauses in 6 prompts, all real constraints. Before these bounds it
370
+ pinned 17 in 11 prompts, 6 of them from one pasted 387,905-char agent log.
371
+ `tests/constraint-fixtures.md` lists the rows, the misses and the known false
372
+ positives.
373
+ - **Generic arming stems carry a qualifier now.** Ten code-sense asks no
374
+ longer arm product, spec or research. Examples: "add a feature flag",
375
+ "segment fault", "tabloya sütun ekle (sql)", "bu fonksiyonu sadeleştir". Every
376
+ frozen corpus row keeps its verdict.
377
+ - **The policy keeps no joined `CONTRACT` constant.** The cost report measures
378
+ the shipped `tezgah-contract` skill file instead. `ContractParity` walks the
379
+ policy blocks against that file. The executive-mode "these win" sentence now
380
+ covers output and report style only. A nested AGENTS.md or CLAUDE.md still
381
+ binds its subtree.
382
+ - **opencode compaction passes the session id.** The builder then forgets the
383
+ lessons and armed paragraphs that session saw. The plugin used to send `{}`.
384
+ - **Research predictions and the per-component report stay frozen.** They keep
385
+ working as documented and take no new rule, field or command (ADR 009).
386
+ - **`check` reports a superseded claim once.** Only the row that supersedes it
387
+ warns, naming both ids. The superseded row no longer warns a second time.
388
+ - **Docs cite Python code by symbol.** A citation into Python code is now
389
+ `path::name` or `path::Class.method`, not `path:line`. Moving lines no longer
390
+ shifts it. `bin/tezgah-docs --citations` reads the cited file's AST and fails
391
+ on a name it does not define. 961 docs citations moved to the new form. The
392
+ rest kept `path:line`: no single enclosing symbol, a non-Python target, or a
393
+ stale line nobody has re-anchored yet. They stay under the unjudged ratchet.
394
+ A later pass read each stale line inside one symbol against the code. After
395
+ it, 109 more citations name a symbol (`--citations`: 1081 judged before, 1190
396
+ after, 0 outside). Eight that point at a module comment or a module-level
397
+ line were re-anchored as `path:line`.
398
+ - **Ten more docs pages cite code by symbol**. A pass read their unjudged
399
+ citations against the code. Now 101 of them name a symbol
400
+ (`--citations`: 1230 judged before, 1333 after, 0 outside). Another 83 point
401
+ at JavaScript, shell, markdown or a module-level line, and now carry the line
402
+ they describe. One sentence in `docs/gate.md` said a path spelled differently
403
+ escapes the concurrent-write guard. The guard compares resolved paths, so the
404
+ sentence now names the case it does skip: a row with no `target`.
405
+ - **The rule ledger drops its `since` column.** A history rewrite left no
406
+ record of the first commit that carries each rule. The provenance table in
407
+ `docs/gate.md` now has `rule`, `incident`, `evidence` and `pin`.
408
+
409
+ - **The lessons ranking ignores words that name no lesson.** English and
410
+ Turkish function words no longer rank a line. On a ledger of ten or more
411
+ lines, neither does a word found in more than half of them. "update the
412
+ changelog" used to inject three unrelated lessons and now injects none. The
413
+ docs fallback ranks as before.
414
+ - **High-stakes briefs route to frontier by rule.** The override also matches
415
+ destructive data and history operations. It matches keys, certificates,
416
+ bearer and access tokens, and privilege changes too. A 12-brief fixture pins
417
+ it: 8 high-stakes briefs go to frontier, 4 near misses do not.
418
+ - **Route rows and the skill hint's cost row name who answered.** Each carries a
419
+ `judge=<provider>/<model>` word, and the model is the one the reply names.
420
+ `via` keeps its name, so `tezgah-route --report` groups history as before.
421
+ - **consult's referee reads anonymous answers in a shuffled order.** The output
422
+ maps each label to its member. With no recorded referee, an available member
423
+ outside the panel referees. Otherwise a note says the referee is a panel member.
424
+ consult reads omp's session model only on an omp session.
425
+ - **A pass now licenses a claim only when it checked something.**
426
+ `--version`, `--help`, `--list`, `--collect-only`, `make help` and a bare
427
+ `ruff` now record as plain runs. So do formatters in write mode:
428
+ `ruff format`, `ruff check --fix`, `prettier --write` and `eslint --fix`.
429
+ A formatter run after a pass now makes that pass stale. Some checks say
430
+ in their own output that they ran nothing: `collected 0 items`, `no tests
431
+ ran`, `Ran 0 tests`, `No tests found`. Such a run no longer counts as a
432
+ pass. omp's bridge reads
433
+ that from the result and sends only the flag. A pass also has to come from
434
+ the changed file's own repository, so `cd ../other && pytest` no longer
435
+ covers an edit here. The rule now dates a pass from the moment its check
436
+ began, so a write that landed while the check ran makes it stale. The gate
437
+ reads the same list: an information form is not a neutered or piped check,
438
+ and it gets no retry exemption.
439
+ - **Honest Stop counters.** A blocked reply that claimed nothing is now a
440
+ `refusal` row, not a `claim`. It has no completion word and no claim about
441
+ an outside system. `false_completion / claims` counts claims only, and
442
+ `counters` adds `refusals`. A `no verify_ok` row says
443
+ whether no check ran or no pass of one showed. Rows are now version 3.
444
+ The docs no longer call that ratio the one number that matters, and no
445
+ longer quote a fixed value for it.
446
+ - **A question is not a claim on a turn with no work.** "Testler geçti mi?",
447
+ "is it done?" and "not tested yet" no longer trigger the no-work claim
448
+ check. "Tamamlandı, push edeyim mi?" still does.
449
+ - **tezgah teaches `codegraph affected` as what it is.** codegraph 1.6.0 says
450
+ it "finds test files affected by changed source files". Every copy taught it
451
+ as the blast radius of a ref. Now the contract, the reminder and the skills
452
+ say it. The role bodies and the graph workflows say it too. The blast radius
453
+ is `git diff` plus `codegraph impact <symbol>` per changed symbol.
454
+ `git diff --name-only <ref> | codegraph affected --stdin` picks the tests.
455
+ A reviewer with no shell (Claude, opencode) gets the changed files from its
456
+ caller and runs the MCP `codegraph_impact` tool per symbol.
457
+ - **ToolSearch loads both codegraph MCP names.** A plugin install names the
458
+ tools `mcp__plugin_tezgah_codegraph__*`, a checkout's own server
459
+ `mcp__codegraph__*`. The select lines name both.
460
+ - **tezgah retires three unused roles.** It no longer generates
461
+ `tezgah-explorer`, `tezgah-verifier` or `tezgah-researcher`. A session start
462
+ sweeps their managed files from the repo agent dirs. `--install` sweeps them
463
+ from omp's agent dir. The plugin's hand-kept `agents/tezgah-explorer.md` is
464
+ gone. Steering names none of them.
465
+ - **`agents-off` removes the generated agents.** It used to stop generation and
466
+ leave the old files for every host to keep loading. The next session start
467
+ sweeps the repo agent dirs. The next `--install` sweeps omp's user-level
468
+ agents, and it removes only names tezgah ever generated.
469
+ - **A repo's `.no-graph` hides the reviewer from steering**, also on omp, where
470
+ the agent file is user-level.
471
+ - **Claude reads the graph workflows from the plugin only.** `--install` no
472
+ longer links `~/.claude/workflows/*.js`, so each workflow loads once. It
473
+ removes tezgah's old links there and any dangling `cbm-*.js` link. The
474
+ report row now checks that no such link is left.
475
+ - **The `ai-research` feature row is gone.** It switched nothing. A
476
+ `config.json` that still names it loads and installs as before.
477
+
478
+ ### Fixed
479
+
480
+ - **Cursor's Stop rule re-asks once, as on every other host.** A real Cursor
481
+ `stop` payload carries `loop_count` and no `stop_hook_active`. The hook read
482
+ only the flag, so it refused every follow-up its own refusal started, until
483
+ Cursor's cap ended the chain. It now counts `loop_count`
484
+ (`hosts/cursor/hook.py::asked`).
485
+
486
+ - **The false-done reader no longer counts an honest partial fix as done.**
487
+ `claims` took a fix marked verified beside an unverified test as done. A
488
+ reply that admits an open check now reads as no claim. It says the work
489
+ lacks a check, or that a test contradicts the issue or cannot pass
490
+ (`hooks/tezgah_integrity.py::ADMITTED`). The rule came from the 60
491
+ hand-labelled E4 dev messages, where precision rose from 0.15 to 0.69 at
492
+ recall 1.0 (`tests/claim_reader_eval.py`). On a held-out set of 40 messages,
493
+ labelled by two model raters (kappa 0.565), precision rose from 0.212 to
494
+ 0.857. Recall fell from 1.0 to 0.857 (6 of 7), below the plan's bar of 0.9.
495
+ The one miss is a real verification claim whose double negative read as an
496
+ admission. `claims` only feeds the benchmarks' false-done counts. The Stop
497
+ verdict reads the plain vocabulary, so no refusal changed. A false-done
498
+ count from before this change is not comparable with one after it.
499
+ - **The tap formula waits for its asset.** The release's brew job pushed
500
+ `Formula/tezgah.rb` before it uploaded the tarball the formula names. So
501
+ `brew install` met a 404 until the upload finished, and for good if it
502
+ failed. The job now uploads the tarball and its `.sha256` first. It checks
503
+ that both are on the release, and only then touches the tap.
504
+ - **Two sharded CI tests no longer race the runner's load.**
505
+ `test_components.Switches` set its switches after the session's first
506
+ ledger row. On a slow runner the latch then kept them out, as it should. The
507
+ turns after the switches now run as a new session. The redact linear-time
508
+ test now interleaves its two sizes, best of five each, so one load spike
509
+ cannot land on one size alone.
510
+ - **The seam refuses a plain-http endpoint override off this machine.** The
511
+ judge seam's `TEZGAH_TYPESAFE_URL` and `TEZGAH_OPENROUTER_URL` and the
512
+ replay rater's `TEZGAH_DEEPSEEK_URL` all route through
513
+ `tezgah_judge.override`. An `http://` URL to another host would have sent
514
+ the bearer key and the state in clear. Loopback stays allowed for the tests.
515
+ `consult` now refuses a plain-http `CONSULT_URL` off this machine the same
516
+ way, before any request, as failure class `plain-http`.
517
+ - **A Homebrew install survives `brew upgrade` with its default cleanup.**
518
+ The installer now names its keg through the stable `opt/tezgah` link
519
+ (`hooks/tezgah_paths.py::stable_root`). So the farm links, the omp bridge's
520
+ hook path and dsh's `configPath`/`pluginRoot` no longer name the
521
+ versioned keg the cleanup deletes. The session-start attest reads the same
522
+ root, so a brew session reports no drift before or after an upgrade. A
523
+ checkout still names itself.
524
+ - **A Windows release install can update, upgrade and uninstall itself.**
525
+ `running_prefix()` now accepts the junction `install.ps1` makes. It also
526
+ accepts the copy `install.ps1` makes when Windows refuses the junction. So
527
+ `tezgah update` finds the release prefix. The default prefix is
528
+ `%LOCALAPPDATA%\tezgah` on Windows. `install.ps1` passes `-Prefix` to
529
+ `--install`. `--upgrade` runs
530
+ `install.ps1 -NoInstall` there instead of `bash`. A missing `bash` or
531
+ `powershell` is a refusal that names it, not a traceback. `--uninstall`
532
+ removes the junction as a link (`bin/tezgah-setup::is_link`).
533
+ - **The opencode plugin reads Windows roots.** `TEZGAH_ROOTS` splits on the
534
+ platform delimiter (`;` on Windows), and `shell.env` joins with it. The
535
+ root test uses `path.relative`. So a `C:\` root no longer leaves the plugin
536
+ inert.
537
+ - **The `control` rule refuses fewer harmless calls.** A replay of real
538
+ ledgers found 19 refusals. 13 of them were false.
539
+ A multi-line `python3 -c '...'` is now one word, not lines of commands, so a
540
+ switch path, a `>=` or `tezgah-capture` in the script is data. So is the
541
+ body of a `python3 - <<PY` heredoc when bash expands nothing in it. A write
542
+ under the install checkout's own `.tezgah/` is not hook wiring. A Claude
543
+ `settings.json` counts in `~/.claude` or under a root, not in a temp
544
+ fixture. A shell's script (`bash -c`, `bash <<EOF`) is still read.
545
+ - **opencode keeps one snapshot per write and one nudge per session.**
546
+ The core captures a write it answers through `tezgah-gate decide`.
547
+ The plugin now captures only a call the core did not answer.
548
+ Both sides name the nudge mark `sha1(session)[:16]`
549
+ (`hooks/tezgah_gate.py::nudge_mark`).
550
+ - **The update chip reaches installs on the retired 0.2.0-0.32.0 line.** A
551
+ re-root on 2026-10-04 restarted the numbering at 0.1.1.
552
+ npm last served 0.32.0 before it. `newer()` compared 0.30.0 higher than every
553
+ 0.1.x release, so those installs never saw the chip. One constant,
554
+ `hooks/tezgah_update.py::RETIRED`, now holds the retired range. The check
555
+ offers the public release to an install inside it, and the chip adds
556
+ `(line reset)`.
557
+
558
+ - **omp marks the first effect after an untrusted read.** Its post-tool hook
559
+ now calls the shared `marks`. The effect's row carries the inherited channel.
560
+ The taint notice rides the result. A subagent's report keeps its label, though
561
+ the bridge never sends the report's body.
562
+ - **tezgah labels more shell reads as network reads.** These now count:
563
+ `gh issue view|list` and `gh pr view|diff|checkout|list`. A `git clone`
564
+ counts unless it names a local path. A `git pull` or `fetch` counts when it
565
+ names a URL.
566
+ They also count behind `sudo`, `git -C dir` or an `X=1` prefix. A bare
567
+ `git pull` or `fetch`, or one naming a remote, reads the user's own tree and
568
+ stays unlabelled. Every host and the opencode plugin read them the same way.
569
+ Nothing new gets refused.
570
+ - **A shell call after a subagent keeps its result size.** On Claude, dsh and
571
+ Codex, such a call inherits the subagent channel. Its row then lost
572
+ `out_bytes`, because the report's byte rule keyed on that channel. The rule
573
+ now keys on the call's own channel. A background Agent launch now records no
574
+ `out_bytes` (unknown) instead of its result's field count.
575
+ - **One credential rule on every write route.** It refuses a `ghp_`,
576
+ `sk-live-` or `AKIA` token in a Write, an Edit, a patch and a heredoc. All
577
+ four pass
578
+ `password = os.environ[...]`. The `name=value` shape now counts only next to
579
+ a shell sink. The gate refuses `git add .env` and passes `.env.example`,
580
+ `.env.sample`, `.env.template`, `.env.dist` and `.env.defaults`.
581
+ An identifier such as `pk_users_organization_id` passes: a bare `sk-`, `pk_`
582
+ or `rk_` counts only with its qualifier (`sk-live-`). A documentation
583
+ placeholder (`AKIAIOSFODNN7EXAMPLE`, `ghp_xxxx...`) passes, and so does a
584
+ token in a template or a test fixture. A token the file already holds is
585
+ not refused again.
586
+ - **The skip rule reads every write dialect.** A test skip that arrived through
587
+ `patch`, `new_str` or `file_text` used to pass. The rule now reads an
588
+ `apply_patch` file by file, so a skip in its non-test file still passes.
589
+ - **A shell redirect or `tee` meets the race and task rules.** The gate refuses
590
+ a shell write into the task record or outside its allowlist. A temp file or a
591
+ device is scratch: `pytest > /tmp/check.log` meets no allowlist and no race.
592
+ A shell `run` row that writes any other file now carries `target`, on Python
593
+ and on opencode. Two sessions that write one file through the shell now
594
+ collide like two edits.
595
+ - **One corpus holds every host to the core.** `tests/gate_vectors.json` sends
596
+ each vector through every host's own entry point and matcher. At the base
597
+ commit 44 cells disagreed with the core. Now none does, outside one named
598
+ opencode ceiling.
599
+ - **The masker and the status reader drop three misreads.** An escaped `\$'` no longer
600
+ opens an ANSI-C string. A quote left open blanks only what follows it, and an
601
+ apostrophe in a heredoc body opens no quote. A quoted newline, a comment, a
602
+ heredoc body and `exit $?` after a check no longer take the check's status.
603
+ The opencode plugin reads all of these the same way.
604
+ - **The word reader follows bash on three shapes.** A `$'it\'s'` is one
605
+ word, so the line after it no longer falls to the
606
+ rough read. The words after a `$( )` or backtick close stay that command's
607
+ arguments. `shell_programs` names the substitutions of an unquoted heredoc
608
+ body and nothing of a quoted one. The fuzzer found all three.
609
+ - **The opencode plugin reads a shell line the way the core does.** Its
610
+ masker, word reader, program reader and ledger kind follow the core's. A
611
+ shared corpus pins both sides: the gate-01 prefixes and the status shapes.
612
+ - **A prefix bash reads as words no longer hides a shell rule.** Such a
613
+ prefix is a URL's `//`, `a#b`, a glob pair or `'x\'`. The masker read it as
614
+ a comment or an open string and hid the command after it: `HUSKY=0 git
615
+ commit`, `pytest || true`, `tezgah-task phase` or a credential write. `mask()` now
616
+ reads a shell line the way bash does. Source files keep the old reading
617
+ (`mask_source`). `shell_programs` uses the gate's own reader, so `a#b`, a
618
+ redirect target and an unreadable line no longer mislead it. The opencode
619
+ plugin reads the line the same way.
620
+ - **A check whose status the line does not keep is no longer a pass.** These
621
+ lines record as ran: `pytest; echo done`, `pytest; echo EXIT=$?`, `pytest &`,
622
+ `pytest > log; tail log`. Each exits 0 whatever pytest found.
623
+ `pytest && echo ok`, `cd x && pytest` and a `set -o pipefail;` pipe still
624
+ pass (`status_hidden`). The NEUTER comment now names only what it denies.
625
+ The piped and neutered remedies name the shape that keeps the status.
626
+ - **Two lines each delivering their own `to_human/report.md` are no longer
627
+ serial twins.** `serial_twins` compares the resolved file, not the spelling.
628
+ - **A claim's `path:line` citation is not a number.** The containment rule
629
+ lifts it off the statement, like a date.
630
+ - **The research skill's `init` example carries `--ask`.** Without it, `init`
631
+ refused the command. The skill also says `source` does not check for a commit
632
+ of the protocol. The order rule proves commit order, not run order.
633
+ - **A hook whose core cannot import fails open and says so.** Eleven entry
634
+ points imported the core outside `safe()`. A rename or a broken module ended
635
+ them with a traceback, and on omp that disabled the gate for the session.
636
+ They now exit 0, print one stderr line and write a `crash` row. The status
637
+ line shows a `crash` mark for that session. `tezgah-gate check` exits 3, so
638
+ the MCP `gate_check` no longer reads a dead gate as a pass.
639
+ - **The disarmed-gate mark no longer counts PostToolUse rows.** A PostToolUse
640
+ hook keeps writing while a broken PreToolUse lets every call through. Only a
641
+ row from the gate now proves it ran, over write and shell calls.
642
+ - **`--sync` no longer leaves a half-empty plugin copy.** It used to delete
643
+ the copy, then copy into it. It now builds each copy in a staging tree beside
644
+ the plugin cache and swaps it in, keeping the copy's `.git`. A sync stopped
645
+ mid-swap is put back by the next one, `.git` included. A failed copy makes
646
+ `--sync` exit 1. Every copied file is 0644, or 0755 when executable.
647
+ - **The omp report row compares the bridge byte for byte.** It checked six
648
+ handler names, so a stale or edited bridge passed. It now compares the
649
+ bridge with a fresh render.
650
+ - **A malformed `~/.config/tezgah/config.json` is no longer rewritten.**
651
+ `--install` read it as empty and wrote its defaults over the user's roots.
652
+ It now refuses the file, names it, leaves its bytes alone and exits 1.
653
+ - **The graph workflows report a failed agent as unknown.** `graph-review` said
654
+ "all four dimensions came back clean" when every dimension failed. It listed
655
+ a finding as refuted when both refuters failed. `graph-impact` dropped a
656
+ failed planner and turned a failed sweep into "no blind spots". Each script
657
+ now names every failure in an `unknown` list. A finding no refuter answered
658
+ stays unverified. A stub runtime (`tests/_workflow_harness.mjs`) tests both.
659
+ - **`graph-impact` parses again.** It had one closing parenthesis too many, so
660
+ Claude's runtime could not load it at all.
661
+ - **The status line marks graph use on a plugin install.** It tested only
662
+ `mcp__codegraph__`. It now shares the PostToolUse store's test.
663
+ - **tezgah records a Claude skill load.** The plugin's PostToolUse matcher
664
+ carries `Skill`, and so does dsh's manifest, which mirrors it. The hook writes
665
+ `skill:<name>` (or the pony/adhd mark). The skill-fitness report then counts
666
+ Claude sessions. Nobody has checked that Claude fires PostToolUse for the
667
+ Skill tool.
668
+ - **A host config the installer cannot parse is left alone.** Seven install
669
+ steps read a host's JSON config and then rewrote it. They cover Codex and
670
+ Cursor `hooks.json`, opencode's `opencode.json` and `tui.json`, Cursor's
671
+ `mcp.json` and `cli-config.json`, and omp's `mcp.json`. A trailing comma, a
672
+ `//` comment or a top level that is not an object made the installer write
673
+ its default over the file. `--install` now names that file and the parse
674
+ error, leaves its bytes alone and exits 1.
675
+ - **The skill hint can no longer outlive the hook.** It asks once, with a 4 s
676
+ wall-clock deadline, well under omp's 10 s hook kill. The prompt goes out
677
+ redacted and cut at 2,000 characters.
678
+ - **A dead judge provider is not paid for on every call.** A 401, 402 or 5xx
679
+ marks it down for five minutes. The mark covers that provider, endpoint and
680
+ key. Until it expires the seam answers with no judgement and sends no request.
681
+ - **codegen guards its egress.** It refuses a redirect to another host, a plain
682
+ `http` endpoint off this machine, and a file that carries a credential. Each
683
+ exits 2, so the caller writes the change itself.
684
+ - **Every changing write keeps its own backup.** A write that changes a file
685
+ copies it to `<file>.<timestamp>.tezgah-bak` first. Before, only the first
686
+ write left a backup. The oldest timestamped copy is always kept, beside the
687
+ newest four. A bare `<file>.tezgah-bak` from an older release stays as is.
688
+ A full uninstall removes the timestamped backups of tezgah's own state too.
689
+ - **`--install` fails when a planned host is not armed.** The run printed MISS
690
+ under a host and still exited 0. Now it exits 1 and names the host and row
691
+ under `not armed:`. Only the arming rows count: hooks wired, the contract
692
+ current, and omp's extension row where an omp CLI exists. Codex
693
+ `hooks trusted`, the provider keys and Claude's plugin copy stay out,
694
+ because a correct fresh install leaves them MISS.
695
+ - **Codex write rows know where they ran.** The Codex hook was the one host
696
+ that gave the ledger no cwd. Its write rows carried no workspace, and a
697
+ relative path resolved against the hook process instead of the repository.
698
+ - **`tezgah-capture` no longer counts as a read of the screen.** It is the
699
+ pre-write file snapshot CLI. A turn could end on a done claim because this
700
+ run stood in for a screen proof or for a passing check.
701
+ - **dsh has no Stop rule.** Its bridge drops every call's outcome, so no check
702
+ there can show a pass. The rule could only refuse honest work there. The
703
+ Stop entry leaves `hosts/dsh/hooks.json` until the bridge carries outcomes.
704
+
705
+ - **A release publishes only after CI passed on its commit.** `release.yml`
706
+ now runs `ci.yml` as its `ci` job. `npm-publish` and `brew-formula` wait for
707
+ it. v0.1.2 reached npm and brew while its own CI run failed.
708
+ - **A test run that runs nothing no longer passes.** A docs-only
709
+ `tests/impacted.py --run` matched no test file and passed with 0 tests. It
710
+ now runs the docs modules. A run where nothing maps, and a `--ref` with no
711
+ change, exit 5. It prints a failed module's log, not only its path.
712
+ - **The suite stays out of the real ledger.** Importing `tests/support.py`
713
+ gives the process a temp HOME and drops `TEZGAH_SESSION`. `tests/test_models.py`
714
+ does the same for the `tezgah-route` runs it starts.
715
+ - **CI shows what it checks.** The plan report step read the gitignored
716
+ `.tezgah/` and could never fail, so it left CI. It stays a local check. The
717
+ docs now take the CI version list from `.github/workflows/ci.yml`.
718
+ `test-sharded` runs `tests/impacted.py --all` on 3.10 and 3.14 as a
719
+ four-week shadow of the four-version matrix. No matrix cancels its other
720
+ legs on a failure.
721
+ - **`bin/tezgah-mcp.py` exists**, the `.py` twin every other Python entry
722
+ point in `bin/` has.
723
+
724
+ - **Docs that disagreed with the code.** `docs/gate.md` listed Secret before Workspace,
725
+ and `decision` checks them the other way. The Language section did not name `lang-off`.
726
+ `docs/judge.md` counted four callers, and `bin/tezgah-taste` is the fifth. The READMEs
727
+ said fourteen kill switches. CORE names sixteen. Forty-one bare-file citations, six in
728
+ code comments, and the repeat-guard anchor in "Adding a rule" pointed at the wrong
729
+ lines.
730
+
731
+ - **Uninstall sweeps four more legacy switches.** An uninstall now also sweeps
732
+ `workspace-off`, `triage-off`, `docs-judge-off` and `update-check-off` from `~/.claude`.
733
+ - **The Homebrew formula runs.** It copied `tezgah-setup` out of the tree, so
734
+ the copy could not find `hooks/` and died on import. It now links into the
735
+ installed tree, and also installs the command as `tezgah`.
736
+
737
+ [Unreleased]: https://github.com/r1z4x/tezgah/compare/v1.0.0...HEAD
738
+ [1.0.0]: https://github.com/r1z4x/tezgah/releases/tag/v1.0.0