@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.
- package/CHANGELOG.md +738 -0
- package/LICENSE +21 -0
- package/MANIFEST +753 -0
- package/README.de.md +169 -0
- package/README.es.md +168 -0
- package/README.fr.md +166 -0
- package/README.md +161 -0
- package/README.tr.md +163 -0
- package/agents/tezgah-reviewer.md +70 -0
- package/bin/codegen +337 -0
- package/bin/consult +797 -0
- package/bin/tezgah-adhd +50 -0
- package/bin/tezgah-agents +45 -0
- package/bin/tezgah-capture +66 -0
- package/bin/tezgah-context +96 -0
- package/bin/tezgah-decisions +213 -0
- package/bin/tezgah-design +953 -0
- package/bin/tezgah-docs +1199 -0
- package/bin/tezgah-doctor +497 -0
- package/bin/tezgah-dsh +37 -0
- package/bin/tezgah-dsh.cmd +70 -0
- package/bin/tezgah-gate +75 -0
- package/bin/tezgah-import-ai-research +439 -0
- package/bin/tezgah-index +32 -0
- package/bin/tezgah-lessons +148 -0
- package/bin/tezgah-mcp +322 -0
- package/bin/tezgah-migrate +324 -0
- package/bin/tezgah-pony +50 -0
- package/bin/tezgah-research +772 -0
- package/bin/tezgah-rollback +93 -0
- package/bin/tezgah-route +124 -0
- package/bin/tezgah-setup +5798 -0
- package/bin/tezgah-status +383 -0
- package/bin/tezgah-task +607 -0
- package/bin/tezgah-taste +423 -0
- package/bin/tezgah-triage +485 -0
- package/bin/tezgah.js +36 -0
- package/commands/adhd.md +21 -0
- package/commands/ponytail.md +21 -0
- package/docs/README.md +112 -0
- package/docs/architecture.md +226 -0
- package/docs/citations-baseline.json +59 -0
- package/docs/clarity-baseline.json +116 -0
- package/docs/contract.md +416 -0
- package/docs/environment.md +141 -0
- package/docs/evidence.md +831 -0
- package/docs/feature-audit.md +139 -0
- package/docs/gate.md +407 -0
- package/docs/glossary.md +201 -0
- package/docs/hosts.md +400 -0
- package/docs/index.json +471 -0
- package/docs/judge.md +193 -0
- package/docs/layers.md +189 -0
- package/docs/models.md +160 -0
- package/docs/operations.md +666 -0
- package/docs/research.md +809 -0
- package/docs/results/paired-outcome-2026-10.jsonl +254 -0
- package/docs/results/paired-outcome-2026-10.md +204 -0
- package/docs/skills.md +236 -0
- package/docs/status-line.md +315 -0
- package/docs/testing.md +287 -0
- package/docs/vision.md +117 -0
- package/hooks/hooks.json +33 -0
- package/hooks/projects-auto-init.py +98 -0
- package/hooks/projects-posttooluse.py +149 -0
- package/hooks/projects-pretooluse.py +40 -0
- package/hooks/projects-stop.py +60 -0
- package/hooks/tezgah_agents.py +817 -0
- package/hooks/tezgah_apps.py +266 -0
- package/hooks/tezgah_attest.py +255 -0
- package/hooks/tezgah_clarity.py +171 -0
- package/hooks/tezgah_components.py +140 -0
- package/hooks/tezgah_context.py +2953 -0
- package/hooks/tezgah_embed.py +765 -0
- package/hooks/tezgah_gate.py +2736 -0
- package/hooks/tezgah_guard.py +177 -0
- package/hooks/tezgah_index.py +124 -0
- package/hooks/tezgah_integrity.py +5141 -0
- package/hooks/tezgah_judge.py +487 -0
- package/hooks/tezgah_lang.py +230 -0
- package/hooks/tezgah_lessons.py +210 -0
- package/hooks/tezgah_models.py +855 -0
- package/hooks/tezgah_paths.py +1132 -0
- package/hooks/tezgah_policy.py +1039 -0
- package/hooks/tezgah_rank.py +77 -0
- package/hooks/tezgah_replay.py +1109 -0
- package/hooks/tezgah_research.py +5176 -0
- package/hooks/tezgah_shapes.py +305 -0
- package/hooks/tezgah_skill_pick.py +227 -0
- package/hooks/tezgah_snapshot.py +490 -0
- package/hooks/tezgah_stopspec.py +320 -0
- package/hooks/tezgah_task.py +458 -0
- package/hooks/tezgah_taste.py +201 -0
- package/hooks/tezgah_untrusted.py +112 -0
- package/hooks/tezgah_update.py +430 -0
- package/hosts/codex/hook.py +268 -0
- package/hosts/codex/hooks.json +26 -0
- package/hosts/cursor/hook.py +461 -0
- package/hosts/cursor/hooks.json +44 -0
- package/hosts/dsh/hooks.json +21 -0
- package/hosts/dsh/statusline/lib/client.js +138 -0
- package/hosts/dsh/statusline/lib/index.js +104 -0
- package/hosts/dsh/statusline/package.json +28 -0
- package/hosts/omp/hook.py +277 -0
- package/hosts/omp/tezgah-hook.ts.in +701 -0
- package/hosts/opencode/plugins/tezgah.js +2742 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
- package/output-styles/tezgah.md +142 -0
- package/package.json +32 -0
- package/packaging/build.sh +342 -0
- package/packaging/install.ps1 +166 -0
- package/packaging/install.sh +56 -0
- package/packaging/upgrade.sh +142 -0
- package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
- package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
- package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
- package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
- package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
- package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
- package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
- package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
- package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
- package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
- package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
- package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
- package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
- package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
- package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
- package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
- package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
- package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
- package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
- package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
- package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
- package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
- package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
- package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
- package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
- package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
- package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
- package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
- package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
- package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
- package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
- package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
- package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
- package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
- package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
- package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
- package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
- package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
- package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
- package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
- package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
- package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
- package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
- package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
- package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
- package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
- package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
- package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
- package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
- package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
- package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
- package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
- package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
- package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
- package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
- package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
- package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
- package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
- package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
- package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
- package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
- package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
- package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
- package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
- package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
- package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
- package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
- package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
- package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
- package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
- package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
- package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
- package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
- package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
- package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
- package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
- package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
- package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
- package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
- package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
- package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
- package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
- package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
- package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
- package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
- package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
- package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
- package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
- package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
- package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
- package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
- package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
- package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
- package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
- package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
- package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
- package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
- package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
- package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
- package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
- package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
- package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
- package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
- package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
- package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
- package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
- package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
- package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
- package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
- package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
- package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
- package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
- package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
- package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
- package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
- package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
- package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
- package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
- package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
- package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
- package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
- package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
- package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
- package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
- package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
- package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
- package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
- package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
- package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
- package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
- package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
- package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
- package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
- package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
- package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
- package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
- package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
- package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
- package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
- package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
- package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
- package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
- package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
- package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
- package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
- package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
- package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
- package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
- package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
- package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
- package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
- package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
- package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
- package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
- package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
- package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
- package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
- package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
- package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
- package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
- package/skills/ai-research/SKILL.md +101 -0
- package/skills/ai-research/SOURCE +38 -0
- package/skills/ai-research/index/1-frame.md +18 -0
- package/skills/ai-research/index/2-data.md +21 -0
- package/skills/ai-research/index/3-train.md +48 -0
- package/skills/ai-research/index/4-measure.md +25 -0
- package/skills/ai-research/index/5-run.md +23 -0
- package/skills/ai-research/index/6-write.md +35 -0
- package/skills/ai-research/library.json +3456 -0
- package/skills/analyze-app/EVALS.md +82 -0
- package/skills/analyze-app/SKILL.md +188 -0
- package/skills/design-contract/EVALS.md +80 -0
- package/skills/design-contract/SKILL.md +171 -0
- package/skills/design-library/EVALS.md +85 -0
- package/skills/design-library/INDEX.md +59 -0
- package/skills/design-library/SKILL.md +58 -0
- package/skills/design-library/SOURCE +131 -0
- package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
- package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
- package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
- package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
- package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
- package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
- package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
- package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
- package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
- package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
- package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
- package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
- package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
- package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
- package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
- package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
- package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
- package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
- package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
- package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
- package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
- package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
- package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
- package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
- package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
- package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
- package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
- package/skills/feature-audit/EVALS.md +83 -0
- package/skills/feature-audit/SKILL.md +326 -0
- package/skills/harness/EVALS.md +81 -0
- package/skills/harness/SKILL.md +88 -0
- package/skills/i-have-adhd/EVALS.md +80 -0
- package/skills/i-have-adhd/SKILL.md +183 -0
- package/skills/no-ai-slop/EVALS.md +89 -0
- package/skills/no-ai-slop/SKILL.md +209 -0
- package/skills/no-ai-slop/eval.md +52 -0
- package/skills/plan-add/EVALS.md +79 -0
- package/skills/plan-add/SKILL.md +179 -0
- package/skills/plan-add/render_table.py +72 -0
- package/skills/plan-status/EVALS.md +78 -0
- package/skills/plan-status/SKILL.md +52 -0
- package/skills/plan-sync/EVALS.md +80 -0
- package/skills/plan-sync/SKILL.md +69 -0
- package/skills/pm-frameworks/SKILL.md +33 -0
- package/skills/pm-frameworks/SOURCE +39 -0
- package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
- package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
- package/skills/ponytail/EVALS.md +80 -0
- package/skills/ponytail/SKILL.md +124 -0
- package/skills/product-analysis/EVALS.md +103 -0
- package/skills/product-analysis/SKILL.md +361 -0
- package/skills/research/EVALS.md +104 -0
- package/skills/research/SKILL.md +570 -0
- package/skills/rl-env/SKILL.md +53 -0
- package/skills/rl-env/SOURCE +41 -0
- package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
- package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
- package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
- package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
- package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
- package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
- package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
- package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
- package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
- package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
- package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
- package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
- package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
- package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
- package/skills/tezgah-contract/EVALS.md +78 -0
- package/skills/tezgah-contract/SKILL.md +792 -0
- package/statusline.py +129 -0
- package/workflows/graph-impact.js +153 -0
- package/workflows/graph-map.js +158 -0
- 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
|