@r1z4x/tezgah 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +175 -1
  2. package/MANIFEST +18 -0
  3. package/NOTICE +152 -0
  4. package/README.de.md +41 -20
  5. package/README.es.md +39 -19
  6. package/README.fr.md +41 -20
  7. package/README.md +15 -8
  8. package/README.tr.md +39 -21
  9. package/bin/codegen +9 -2
  10. package/bin/consult +6 -0
  11. package/bin/tezgah-adhd +3 -0
  12. package/bin/tezgah-agents +3 -0
  13. package/bin/tezgah-capture +3 -0
  14. package/bin/tezgah-design +329 -54
  15. package/bin/tezgah-docs +157 -41
  16. package/bin/tezgah-dsh +1 -1
  17. package/bin/tezgah-gate +7 -2
  18. package/bin/tezgah-import-ai-research +16 -4
  19. package/bin/tezgah-index +3 -0
  20. package/bin/tezgah-lessons +13 -4
  21. package/bin/tezgah-mcp +4 -0
  22. package/bin/tezgah-migrate +3 -0
  23. package/bin/tezgah-ocr-review +2 -1
  24. package/bin/tezgah-optimize +4 -1
  25. package/bin/tezgah-pony +3 -0
  26. package/bin/tezgah-research +12 -6
  27. package/bin/tezgah-rollback +3 -0
  28. package/bin/tezgah-route +1 -1
  29. package/bin/tezgah-setup +596 -157
  30. package/bin/tezgah-status +11 -1
  31. package/bin/tezgah-task +3 -0
  32. package/bin/tezgah.js +10 -3
  33. package/commands/adhd.md +1 -1
  34. package/docs/README.md +19 -8
  35. package/docs/architecture.md +2 -2
  36. package/docs/citations-baseline.json +11 -17
  37. package/docs/clarity-baseline.json +3 -3
  38. package/docs/contract.md +77 -31
  39. package/docs/environment.md +58 -24
  40. package/docs/evidence.md +49 -19
  41. package/docs/gate.md +71 -21
  42. package/docs/hosts.md +65 -52
  43. package/docs/layers.md +1 -1
  44. package/docs/operations.md +67 -24
  45. package/docs/research.md +1 -1
  46. package/docs/skills.md +31 -8
  47. package/docs/status-line.md +33 -23
  48. package/docs/testing.md +48 -17
  49. package/docs/vision.md +6 -2
  50. package/hooks/lang/en.json +5 -2
  51. package/hooks/lang/tr.json +3 -2
  52. package/hooks/projects-posttooluse.py +11 -3
  53. package/hooks/projects-stop.py +1 -1
  54. package/hooks/tezgah_context.py +40 -23
  55. package/hooks/tezgah_gate.py +404 -106
  56. package/hooks/tezgah_integrity.py +367 -97
  57. package/hooks/tezgah_lessons.py +5 -2
  58. package/hooks/tezgah_paths.py +17 -6
  59. package/hooks/tezgah_policy.py +13 -5
  60. package/hooks/tezgah_skill_pick.py +1 -1
  61. package/hooks/tezgah_snapshot.py +6 -3
  62. package/hooks/tezgah_stopspec.py +2 -1
  63. package/hosts/amp/hook.py +1 -1
  64. package/hosts/amp/tezgah-plugin.ts.in +13 -3
  65. package/hosts/antigravity/hook.py +1 -1
  66. package/hosts/codex/hook.py +1 -1
  67. package/hosts/commandcode/hook.py +1 -1
  68. package/hosts/copilot/hook.py +1 -1
  69. package/hosts/cursor/hook.py +2 -1
  70. package/hosts/droid/hook.py +1 -1
  71. package/hosts/gemini/hook.py +1 -1
  72. package/hosts/goose/hook.py +1 -1
  73. package/hosts/omp/hook.py +1 -1
  74. package/hosts/omp/tezgah-hook.ts.in +127 -35
  75. package/hosts/opencode/plugins/tezgah.js +209 -63
  76. package/hosts/qwen/hook.py +1 -1
  77. package/output-styles/tezgah.md +1 -1
  78. package/package.json +6 -3
  79. package/packaging/build.sh +4 -4
  80. package/packaging/install.sh +11 -0
  81. package/packaging/upgrade.sh +3 -0
  82. package/skills/ai-research/LICENSE +21 -0
  83. package/skills/design-contract/SKILL.md +27 -6
  84. package/skills/design-library/LICENSE +21 -0
  85. package/skills/plan-add/render_table.py +7 -0
  86. package/skills/pm-frameworks/LICENSE +21 -0
  87. package/skills/rl-env/LICENSE +201 -0
  88. package/skills/tezgah-contract/SKILL.md +2 -2
  89. package/third_party/open-code-review/LICENSE +201 -0
  90. package/third_party/open-code-review/README.md +15 -0
  91. package/third_party/open-code-review/prompts/main_task_system.md +26 -0
  92. package/third_party/open-code-review/prompts/review_filter_task_system.md +13 -0
  93. package/workflows/graph-map.js +14 -5
package/CHANGELOG.md CHANGED
@@ -6,6 +6,175 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.14.0] - 2026-11-01
10
+
11
+ ### Fixed
12
+
13
+ - **The gate reads hook skips behind wrappers (plan 147).** It refuses a hook
14
+ skip behind a wrapper with arguments (`nice -n 5`, `timeout 60`). That covers
15
+ long value options, option clusters and `env -S`. It also refuses one inside
16
+ `eval`, `eval --` or `builtin eval`. One wrapper reader serves three rules:
17
+ shortcut, control and `VERIFY`. So a wrapped check meets the neuter and piped
18
+ refusals. A check piped into `rg`, `awk`, `sort`, `cat`, `less`, `sed` or
19
+ `tee` meets a refusal too. A trap other than plain cleanup on exit records
20
+ the check as ran, never as passed.
21
+
22
+ - **The gate closes control-plane, credit, language and credential bypasses
23
+ (plan 148).** Git config hooks settings meet a refusal: `core.hooksPath`,
24
+ `include.path`, `includeIf` and worktree config. The gate reads them in a
25
+ file, in `git config`, in `--file` and in `-c`. It refuses credits through `--trailer`, a git
26
+ path or `bash -c`. It refuses non-English names from `git worktree add -b`,
27
+ `git branch -m`, `gh -t`, `git tag` and push refspecs. It refuses credential
28
+ files staged by `git stage`, `git commit <path>` or `update-index --add`. It
29
+ refuses `ditto`, `mkfifo` and `${VAR:-…}` into the control plane. It refuses
30
+ MCP writes, moves and deletes into protected paths. It refuses a write racing
31
+ another session's in-flight write.
32
+
33
+ - **opencode sends shell writes to the core gate first (plan 149).** Every shell
34
+ write, swallowed check and hook-skipping line goes to the core gate. It gets
35
+ the core control, credential, workspace and shortcut refusals verbatim. A
36
+ refusal the plugin decides itself writes the `began` row the core writes.
37
+ `TEZGAH_HOME` is no longer exported.
38
+
39
+ - **The Stop rule reads more claim shapes (plan 150).** An empty Claude Bash
40
+ result is no pass. English past-tense and bare test claims and "not
41
+ tested/checked" admissions read like their Turkish twins. Prose-only and
42
+ benchmark claim reads honour the question and negation window. A plan claim
43
+ records as a claim. A subagent brief authorizes no switch.
44
+
45
+ - **Uninstall restores what the install found (plans 151, 152, 154).** Every
46
+ key and file goes back to its pre-install state. That covers your statusLine,
47
+ opencode compaction, omp codegraph row and `{}` settings files. It covers the
48
+ no-attribution values of Copilot, Command Code, Amp and Droid, and JSON
49
+ indent. It removes the directories tezgah created. It counts only tezgah's
50
+ own markers as leftovers. A partial uninstall keeps the farm the still-armed
51
+ hosts run from. A HOME behind a symlink no longer leaves
52
+ `~/.codex/bin/consult`.
53
+
54
+ - **Install names a host file it cannot read (plan 152).** Such a host rules or
55
+ settings file makes install exit 1. It no longer overwrites that file or
56
+ crashes. Install skips a commented host settings file with exit 0 and names it.
57
+
58
+ - **omp gates MCP device writes and `ast_edit` (plan 153).** An MCP device write
59
+ (`xd://mcp__…`) and `ast_edit` reach the gate as the calls they carry. The
60
+ device write itself meets the gate too. A glob or directory edit target takes the
61
+ control state it reaches. An MCP query records as external, not an edit.
62
+
63
+ - **`--uninstall` fails while anything tezgah wrote survives (plan 154).** It
64
+ exits 1 in that case. The farm carries `tezgah-optimize` and `tezgah-taste`.
65
+ Install refuses abbreviated flags. Piped `--upgrade` output reads in order.
66
+ Install names an unwritable HOME instead of printing a traceback. It refuses
67
+ Python below 3.10 early and names the version found.
68
+
69
+ - **The npm package and the READMEs match what ships (plan 156).** The package
70
+ ships NOTICE and the open-code-review prompts and no `__pycache__`. Every
71
+ vendored skill tree carries its upstream LICENSE. package.json and all five
72
+ READMEs name the fourteen hosts and the 17 refusal rules plus the nudge. They
73
+ also name the 17 rule switches and the current state of the Turkish claim
74
+ reader.
75
+
76
+ - **Farm CLIs answer help (plan 158).** They answer `-h/--help` with exit 0 and
77
+ refuse unknown flags. The `consult` CLI no longer sends a mistyped flag to the
78
+ panel. `tezgah-research check --json` prints pure JSON. `tezgah-status
79
+ --observable=` refuses an unknown measure.
80
+
81
+ - **Build and upgrade scripts fail clearly (plan 159).** `build.sh` without
82
+ `--version` names the artifact after the newest release heading instead of
83
+ `Unreleased`. `upgrade.sh` stops early with a clear message when `curl` or
84
+ `tar` is missing. The Windows CI leg checks that `install.ps1` refuses a
85
+ tampered artifact.
86
+
87
+ - **The graph-map workflow names a failed agent (plan 160).** A failed survey,
88
+ module reader, synthesize or gap-check agent lands in an `unknown` list. It is
89
+ no longer reported as an empty, clean result.
90
+
91
+ - **Subagents read the parent's switches (plan 165).** A subagent latches kill
92
+ switches on its parent's first ledger row when that came first. Every adapter
93
+ takes the parent from the host, the omp and Amp bridges and the opencode
94
+ plugin included. A switch the parent made mid-session no longer disarms rules
95
+ in subagents it spawns later.
96
+
97
+ - **The design chain reaches real UI work (plan 144).** `uygulamayı redesign et`
98
+ arms the design rule, and the frozen arming corpus stays the same. A
99
+ route-file write (`src/app/dashboard/page.tsx`, `src/routes/+page.svelte`)
100
+ owes the design check. `tezgah-design derive` reads a nested Tailwind palette
101
+ (`brand: {50..900}`) and every config in a monorepo, not only the first.
102
+
103
+ - **The citation ratchet holds in every checkout (plan 168).** `bin/tezgah-docs
104
+ --citations` never judges a path under the private `.tezgah/`. The unjudged
105
+ ratchet now holds the same in CI, worktrees and the main checkout.
106
+
107
+ ### Added
108
+
109
+ - **`derive` reads JS/TS theme modules (plan 145).** A repository whose only
110
+ token source is a module such as `src/config/theme.ts` now derives a contract.
111
+ It carries `source: theme-module` with its colours, spacing unit and type
112
+ scale. `read_text` opens each path component with `O_NOFOLLOW` under the
113
+ repository root. It refuses a parent swapped for a symlink.
114
+
115
+ - **`derive --suggest` prints a candidate component inventory (plan 146).** It
116
+ lists `{name, kind}` candidates read off component files and writes nothing.
117
+ It skips tests, stories and names already in the contract. It guesses `kind`
118
+ only from the name and exits 2 when there is no candidate. A person adds the
119
+ ones the repository owns.
120
+
121
+ - **`tezgah-docs --citations` judges more citation shapes (plan 166).** It
122
+ judges bare `(N-M)` and `:N-M` ranges after a cited path, and JS/TS top-level
123
+ symbols. It flags ranges past a file end. Stale opencode plugin citations are
124
+ re-anchored by symbol.
125
+
126
+ ### Changed
127
+
128
+ - **Two sessions meet on their first write of one file (plan 171).** The race
129
+ rule counts another session's unanswered write for 60 seconds. After that it
130
+ counts only if that host answers its writes. A refused prompt holds the file
131
+ about a minute.
132
+
133
+ - **The gate parses a command once per call (plan 169).** Its readers share
134
+ one parse of a command's heredocs and shell commands. Median gate latency is
135
+ back at the 1.13.0 figure.
136
+
137
+ - **Docs match the code again (plan 161).** The hosts, operations, skills,
138
+ research and testing pages document the tezgah-mcp tools and tezgah-decisions.
139
+ They list the omp events and the opencode `event` hook. They state that
140
+ `--install --dry-run` writes. Live probes no longer read as host obedience.
141
+ Drifted citations now name their symbol. tests/test_docs_reach.py keeps them
142
+ in step.
143
+
144
+ - **Ledger rows carry their version (plan 162).** Snapshot and rollback rows now
145
+ carry the row version `v`. The evidence page (`docs/evidence.md`) lists every
146
+ ledger kind, all optional fields and every `subagent_end` writer. It also
147
+ lists the exact prose-exemption names, and a new test checks it.
148
+
149
+ - **docs/contract.md and docs/environment.md match the code (plan 157).** They
150
+ cover the switch table, every environment variable read, budgets, DROP_ORDER
151
+ and the label-anchored composition order. The core and the reminder name the
152
+ kill-switch directory from XDG_CONFIG_HOME. The Ponytail Off line names its
153
+ switches. The suite never runs a real gh on upgrade.
154
+
155
+ - **Status-line marks and docs are complete (plan 163).** `python3
156
+ bin/tezgah-docs` and `python3 bin/tezgah-research` earn the judge and research
157
+ marks. The legend and docs name every host that cannot observe skill reads.
158
+ docs/status-line.md documents the extension `{"segments": [...]}` output and
159
+ an unknown `--observable` measure exiting 2. `/tezgah:adhd` states `on` as the
160
+ default.
161
+
162
+ - **`reminder-off` drops only the per-turn reminder line (plan 164).** Armed
163
+ rules, the gate-inactive notice and the off-note stay. Kill-switch off-notes
164
+ also name the matching section of the `tezgah` output style.
165
+
166
+ - **The impacted test map covers docs pages (plan 167).** tests/impacted.py runs
167
+ tests/test_docs_reach.py for docs/ page changes. It maps the omp status-line
168
+ e2e by the generic helper rule. The research seal test parses `check --json`
169
+ stdout as pure JSON.
170
+
171
+ - **Neuter rows for the audit guards (plan 155).** The neuter matrix gains 59
172
+ rows. Each guard the audit fixes added has one, with a behavioural killer.
173
+ It writes its killer cache only with `--update-killers`.
174
+ It answers `--help`. It runs on a push touching any mutated file. Gate vectors
175
+ cover every refusal rule: stateless ones by vector, stateful ones by named
176
+ tests.
177
+
9
178
  ## [1.13.0] - 2026-10-29
10
179
 
11
180
  ### Fixed
@@ -365,6 +534,10 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
365
534
 
366
535
  - **A contract reads Hallmark's locked `design.md`, and one precedence table decides the floor.** A `design.md` or `DESIGN.md` at the repository root now feeds `derive`. It gives the palette and font roles, with `source: design-md`. The palette converts from OKLCH to the hex `check` compares. A token file beside it no longer competes. The contract gains a `precedence` block. It names `ours` (states, components, evidence, facts) and `theirs` (material, motion character). It names `shared` (contrast, focus-visible, reduced-motion, tap-target) and `verbatim: style`. `check` refuses with exit 2 a key named by two classes. It also refuses `facts` handed to a theme or to the user's own words.
367
536
 
537
+ - **`tezgah-ocr-review` runs open-code-review's loop on omp's model.** It reaches the model through a loopback shim.
538
+
539
+ - **`tezgah-review-quote` places review findings on the diff.** It finds each finding's location by the code it quotes.
540
+
368
541
 
369
542
  ### Changed
370
543
 
@@ -1628,7 +1801,8 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1628
1801
  the copy could not find `hooks/` and died on import. It now links into the
1629
1802
  installed tree, and also installs the command as `tezgah`.
1630
1803
 
1631
- [Unreleased]: https://github.com/r1z4x/tezgah/compare/v1.13.0...HEAD
1804
+ [Unreleased]: https://github.com/r1z4x/tezgah/compare/v1.14.0...HEAD
1805
+ [1.14.0]: https://github.com/r1z4x/tezgah/releases/tag/v1.14.0
1632
1806
  [1.13.0]: https://github.com/r1z4x/tezgah/releases/tag/v1.13.0
1633
1807
  [1.12.0]: https://github.com/r1z4x/tezgah/releases/tag/v1.12.0
1634
1808
  [1.11.0]: https://github.com/r1z4x/tezgah/releases/tag/v1.11.0
package/MANIFEST CHANGED
@@ -556,6 +556,7 @@ skills/ai-research/22-agent-native-research-artifact/research-manager/references
556
556
  skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md
557
557
  skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/ENTRY.md
558
558
  skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md
559
+ skills/ai-research/LICENSE
559
560
  skills/ai-research/SKILL.md
560
561
  skills/ai-research/SOURCE
561
562
  skills/ai-research/index/1-frame.md
@@ -572,6 +573,7 @@ skills/design-contract/SKILL.md
572
573
  skills/design-contract/data-views.md
573
574
  skills/design-library/EVALS.md
574
575
  skills/design-library/INDEX.md
576
+ skills/design-library/LICENSE
575
577
  skills/design-library/SKILL.md
576
578
  skills/design-library/SOURCE
577
579
  skills/design-library/adaptive-interfaces/skills/colour-independence/ENTRY.md
@@ -808,6 +810,7 @@ skills/plan-status/EVALS.md
808
810
  skills/plan-status/SKILL.md
809
811
  skills/plan-sync/EVALS.md
810
812
  skills/plan-sync/SKILL.md
813
+ skills/pm-frameworks/LICENSE
811
814
  skills/pm-frameworks/SKILL.md
812
815
  skills/pm-frameworks/SOURCE
813
816
  skills/pm-frameworks/intended-vs-implemented/ENTRY.md
@@ -820,6 +823,7 @@ skills/product-flow/EVALS.md
820
823
  skills/product-flow/SKILL.md
821
824
  skills/research/EVALS.md
822
825
  skills/research/SKILL.md
826
+ skills/rl-env/LICENSE
823
827
  skills/rl-env/SKILL.md
824
828
  skills/rl-env/SOURCE
825
829
  skills/rl-env/generate-nemo-gym-env/ENTRY.md
@@ -929,6 +933,7 @@ tests/test_cheap_source.py
929
933
  tests/test_clarity.py
930
934
  tests/test_claude_adapters.py
931
935
  tests/test_claude_registration.py
936
+ tests/test_cli_flags.py
932
937
  tests/test_codegen.py
933
938
  tests/test_codex_hook.py
934
939
  tests/test_commandcode_hook.py
@@ -937,6 +942,7 @@ tests/test_constraint_pinning.py
937
942
  tests/test_consult_arena.py
938
943
  tests/test_context.py
939
944
  tests/test_context_diet.py
945
+ tests/test_context_switch_text.py
940
946
  tests/test_control_plane.py
941
947
  tests/test_copilot_hook.py
942
948
  tests/test_cursor_cap.py
@@ -944,19 +950,26 @@ tests/test_cursor_hook.py
944
950
  tests/test_decisions.py
945
951
  tests/test_design_cli.py
946
952
  tests/test_docs.py
953
+ tests/test_docs_citations.py
954
+ tests/test_docs_reach.py
947
955
  tests/test_docs_router.py
948
956
  tests/test_doctor.py
949
957
  tests/test_droid_hook.py
950
958
  tests/test_dsh_hooks.py
951
959
  tests/test_dsh_launcher.py
952
960
  tests/test_dsh_statusline.py
961
+ tests/test_e2e_omp_statusline.py
953
962
  tests/test_embed.py
954
963
  tests/test_encoding.py
955
964
  tests/test_enforcers.py
965
+ tests/test_env_vars_audit.py
966
+ tests/test_evidence_docs.py
956
967
  tests/test_evidence_store.py
957
968
  tests/test_extension.py
958
969
  tests/test_fuzz_shell.py
959
970
  tests/test_gate.py
971
+ tests/test_gate_rules_audit.py
972
+ tests/test_gate_shell_audit.py
960
973
  tests/test_gate_vectors.py
961
974
  tests/test_gemini_hook.py
962
975
  tests/test_goose_hook.py
@@ -988,6 +1001,7 @@ tests/test_mcp_server.py
988
1001
  tests/test_migrate.py
989
1002
  tests/test_models.py
990
1003
  tests/test_neuter_matrix.py
1004
+ tests/test_npm_shim_probe.py
991
1005
  tests/test_ocr_review.py
992
1006
  tests/test_omp_extension.py
993
1007
  tests/test_omp_hook.py
@@ -1016,6 +1030,7 @@ tests/test_research_seal.py
1016
1030
  tests/test_research_stats.py
1017
1031
  tests/test_review_quote.py
1018
1032
  tests/test_setup.py
1033
+ tests/test_setup_farm.py
1019
1034
  tests/test_shapes.py
1020
1035
  tests/test_skill_pick.py
1021
1036
  tests/test_skill_search.py
@@ -1026,6 +1041,8 @@ tests/test_stack.py
1026
1041
  tests/test_statusline.py
1027
1042
  tests/test_stop_after_block.py
1028
1043
  tests/test_stopspec.py
1044
+ tests/test_store_concurrency.py
1045
+ tests/test_switch_latch_subagent.py
1029
1046
  tests/test_switch_latching.py
1030
1047
  tests/test_task.py
1031
1048
  tests/test_taste.py
@@ -1033,6 +1050,7 @@ tests/test_taste_cli.py
1033
1050
  tests/test_taste_ledger.py
1034
1051
  tests/test_tezgah_mcp_wiring.py
1035
1052
  tests/test_triage.py
1053
+ tests/test_uninstall_roundtrip.py
1036
1054
  tests/test_untrusted.py
1037
1055
  tests/test_update.py
1038
1056
  third_party/open-code-review/LICENSE
package/NOTICE ADDED
@@ -0,0 +1,152 @@
1
+ Third-party material vendored into or adapted by this repository. The MIT LICENSE
2
+ at the root covers tezgah's own files; the copies below keep their original terms.
3
+ Each vendored tree (a directory with a SOURCE file) carries upstream's LICENSE
4
+ beside its SOURCE, verbatim at the revision SOURCE names.
5
+
6
+ skills/no-ai-slop - MIT, Peter Yang, https://github.com/petergyang/no-ai-slop
7
+ skills/ponytail - MIT. Origin not recorded at vendoring time; if you are the
8
+ author, open an issue and the attribution will be corrected.
9
+ skills/i-have-adhd - MIT, ayghri, https://github.com/ayghri/i-have-adhd.
10
+ Adapted for tezgah: the ten rules are kept and two are
11
+ rewritten (the state restatement points at the todo list
12
+ instead of duplicating it, and a time estimate is marked
13
+ as an estimate), the user-invocation frontmatter is
14
+ dropped so the skill is model-invocable from the router,
15
+ and the trigger phrases are tezgah's.
16
+ skills/research - MIT, Orchestra Research. Adapts the orchestration layer of
17
+ its AI-research-SKILLs library (the autoresearch,
18
+ ara-rigor-reviewer and ara-research-manager skills):
19
+ https://github.com/orchestra-research/AI-research-SKILLs
20
+ Nothing is copied verbatim.
21
+ skills/product-analysis - MIT. Adapts the intended-vs-implemented method (a gap
22
+ is a finding only when the documented intent and the code
23
+ that enforces it are both cited) and the opportunity-score
24
+ framing from https://github.com/phuryn/pm-skills, whose
25
+ pm-ai-shipping and pm-product-discovery skills attribute
26
+ those in turn to Teresa Torres, Dan Olsen and Alberto
27
+ Savoia. Nothing is copied verbatim: the evidence classes,
28
+ the two-axis rule, the artifact shape and the scorecard are
29
+ tezgah's, and the skill points at the marketplace by URL
30
+ instead of reproducing its text.
31
+
32
+ skills/pm-frameworks - MIT, Pawel Huryn, https://github.com/phuryn/pm-skills.
33
+ VENDORED at revision
34
+ 8607e3b077817f89bf4a9b623246219734ac3be0 (2026-09-19): two
35
+ skills, byte-for-byte upstream -
36
+ `intended-vs-implemented/ENTRY.md` and
37
+ `opportunity-solution-tree/ENTRY.md`, each upstream's
38
+ `SKILL.md` renamed so a host that lists every `SKILL.md`
39
+ below its skills directory does not list it. The entry point
40
+ `skills/pm-frameworks/SKILL.md` is tezgah's own and is not
41
+ part of the manifest; the other 67 skills and the plugin
42
+ manifest are not copied. `skills/pm-frameworks/SOURCE`
43
+ records the upstream paths and the per-file sha256, and
44
+ `tests/test_skills.py` holds the tree to it.
45
+
46
+ skills/ai-research - MIT, Orchestra Research. VENDORED from the same library at
47
+ revision 773a52944ba4747a18bd4ae9ade53fff041adcbc
48
+ (2026-06-15): 98 skills in 23 categories, each with its
49
+ markdown references, in the upstream layout. The bodies are
50
+ byte-for-byte upstream, frontmatter included - 96 keep
51
+ Orchestra Research's `author` line, two
52
+ (`ml-training-recipes`, `a-evolve`) keep the contributing
53
+ author's - and a markdown file with no frontmatter carries
54
+ one attribution comment. Each entry's `SKILL.md` sits at
55
+ the upstream path renamed `ENTRY.md`, bytes unchanged, so a
56
+ host that lists every `SKILL.md` below its skills directory
57
+ does not list it.
58
+ Three machine-scraped reference dumps and the LaTeX template
59
+ trees are not copied, and every drop is named in
60
+ skills/ai-research/SOURCE. `bin/tezgah-import-ai-research
61
+ --check` verifies the tree against its manifest.
62
+
63
+ skills/hallmark - MIT, Hallmark contributors, made by Together AI,
64
+ https://github.com/Nutlope/hallmark. VENDORED at revision
65
+ 7ec868225c6caa040558c321ee0fefa0e73f83a8 (2026-10-22): the
66
+ whole `skills/hallmark/` tree - one `SKILL.md` (the workflow
67
+ itself, listed in its manifest because tezgah ships no entry
68
+ point of its own for it), 98 reference pages including 48
69
+ themes with their pictures and 20 macrostructures, and 10
70
+ zero-dependency Node scripts. Byte-for-byte upstream;
71
+ nothing is adapted, and upstream's own LICENSE sits at
72
+ `skills/hallmark/LICENSE`. `skills/hallmark/SOURCE` holds
73
+ the sha256 of every file and the checkout command; its own
74
+ test (`tests/test_skills.py::HallmarkVendor`) fails on a
75
+ body that drifted, a listed file that is missing, or a file
76
+ beside them the table does not list.
77
+ The tier map `scripts/sloplint.mjs` grades by is
78
+ `references/gates.md` itself, which wins on disagreement.
79
+
80
+ skills/design-library (inclusive-design-skills) - MIT, MC Dean,
81
+ https://github.com/Owl-Listener/inclusive-design-skills.
82
+ VENDORED at revision
83
+ 6e0740f04b2130af60bc57abe3401b91e460e70d (2026-06-09): three
84
+ of its plugins - cognitive-accessibility,
85
+ adaptive-interfaces, inclusive-interaction - every skill in
86
+ them, 30 `SKILL.md`, at the upstream path, each renamed
87
+ `ENTRY.md` (bytes unchanged) so a host that lists every
88
+ `SKILL.md` below its skills directory does not list it.
89
+ ADAPTED, one body -
90
+ cognitive-accessibility/skills/adaptive-personalisation/ENTRY.md
91
+ carries `name: contextual-help-design` upstream, which is
92
+ the sibling `contextual-help-design` skill's name and not
93
+ its own directory; this copy's `name` matches its
94
+ directory, because a host that loads a skill from its
95
+ directory skips one whose name disagrees with it.
96
+
97
+ skills/design-library (designer-skills) - MIT, MC Dean,
98
+ https://github.com/Owl-Listener/designer-skills. VENDORED at
99
+ revision 9a6930cf84a822eb458624bd11c61aac5bbdf224
100
+ (2026-09-05): the whole visual-critique plugin (7
101
+ `SKILL.md`, renamed `ENTRY.md` the same way) and two
102
+ skills of design-research
103
+ (`behavioural-analytics`, `qual-quant-triangulation`),
104
+ byte-for-byte upstream. Nothing in this half is adapted;
105
+ the 12 other design-research skills and the plugin
106
+ packaging surface are not copied.
107
+
108
+ ADAPTED across the library, one statement: the
109
+ inclusive-design-skills copy of
110
+ inclusive-interaction/skills/touch-target-design/ENTRY.md
111
+ states the touch minimum as `44x44 CSS pixels (WCAG 2.2
112
+ Level AA)`. WCAG 2.2 SC 2.5.8 Target Size (Minimum) is
113
+ Level AA at 24x24 CSS px and SC 2.5.5 Target Size
114
+ (Enhanced) is Level AAA at 44x44, and tezgah's own checker
115
+ enforces 24 (bin/tezgah-design, `TAP_TARGET`); the adopted
116
+ copy states 24x24 as the AA floor with its success
117
+ criterion and keeps 44x44 as the AAA floor and the common
118
+ platform guideline. Every other adopted byte is upstream's,
119
+ and `skills/design-library/SOURCE` records the per-file
120
+ sha256 and names both departures.
121
+ `skills/design-library/SKILL.md`, `INDEX.md` and `EVALS.md`
122
+ are tezgah's own files and are not part of the manifest.
123
+
124
+ skills/rl-env - Apache-2.0, Adithya S Kolavi and the FineEnvs authors,
125
+ https://github.com/adithya-s-k/FineEnvs. VENDORED at
126
+ revision 26ab9c60915005b6f536968ac0928482bb18c0f8
127
+ (2026-10-01): the five environment-authoring skills and
128
+ every reference file they ship, 14 files under
129
+ `skills/rl-env/<skill>/`, byte-for-byte upstream including
130
+ frontmatter, at their upstream path under `.claude/skills/`,
131
+ each entry's `SKILL.md` renamed `ENTRY.md` so a host that
132
+ lists every `SKILL.md` below its skills directory does not
133
+ list it.
134
+ Nothing is adapted and nothing is dropped. The entry point
135
+ `skills/rl-env/SKILL.md` is tezgah's own and is not part of
136
+ the manifest, and upstream's own install route
137
+ (`npx skills add adithya-s-k/FineEnvs`) is deliberately not
138
+ used: it writes into a host's skill directory, which is
139
+ outside tezgah's router, its install report and this record.
140
+ `skills/rl-env/SOURCE` carries the upstream paths and the
141
+ per-file sha256.
142
+
143
+ third_party/open-code-review - Apache-2.0, the open-code-review authors,
144
+ https://github.com/alibaba/open-code-review. VENDORED at
145
+ commit 375f64cd6f67a48a135da83cfcf59c52669a09cb: two prompts,
146
+ `prompts/main_task_system.md` and
147
+ `prompts/review_filter_task_system.md`, from upstream's
148
+ `internal/config/template/prompts/`. MODIFIED: each prompt
149
+ carries one added first line, the modification notice; the
150
+ rest of each file is unchanged. Upstream's LICENSE sits at
151
+ `third_party/open-code-review/LICENSE`, and
152
+ `third_party/open-code-review/README.md` records the source.
package/README.de.md CHANGED
@@ -25,8 +25,10 @@
25
25
  ---
26
26
 
27
27
  Tezgah rüstet jeden KI-Programmierassistenten, den Sie ausführen — **omp, den
28
- primären Host**, plus Claude Code, Codex, Cursor, opencode und DeepSeeks dsh —
29
- innerhalb der von Ihnen konfigurierten Repository-Stammverzeichnisse mit einem
28
+ primären Host**, plus Claude Code, Codex, Cursor, opencode, DeepSeeks dsh, Qwen
29
+ Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI, Antigravity
30
+ CLI, Goose und Amp — innerhalb der von Ihnen konfigurierten
31
+ Repository-Stammverzeichnisse mit einem
30
32
  funktionierenden Vertrag aus. Sich selbst überlassen, driften die Assistenten:
31
33
  Einer antwortet auf Türkisch, ein anderer auf Englisch; einer nutzt Grep, ein
32
34
  anderer fragt einen Code-Graphen ab; einer meldet „fertig“, ohne einen Test
@@ -37,11 +39,14 @@ auf dieselbe Weise.
37
39
 
38
40
  ## Was tezgah durchsetzt und aufzeichnet
39
41
 
40
- - **Ein Vertrag, sechs Hosts.** omp, Claude Code, Codex, Cursor, opencode und
41
- dsh sehen dieselben Regeln, denn jeder Host ist ein dünner Adapter über
42
- einem gemeinsamen Kern — eine Regel einmal ändern, alle übernehmen sie.
42
+ - **Ein Vertrag, vierzehn Hosts.** omp, Claude Code, Codex, Cursor, opencode,
43
+ dsh, Qwen Code, Factory Droid, Command Code, GitHub Copilot CLI, Gemini CLI,
44
+ Antigravity CLI, Goose und Amp sehen dieselben Regeln, denn jeder Host ist
45
+ ein dünner Adapter über einem gemeinsamen Kern — eine Regel einmal ändern,
46
+ alle übernehmen sie.
43
47
  - **Eine Fertig-Meldung braucht eine bestandene Prüfung im Protokoll.** Ein
44
- Gate aus 15 Verweigerungen stoppt die entschärfte Prüfung — `--no-verify`,
48
+ Gate aus 17 Verweigerungsregeln und einem einmaligen Hinweis pro Sitzung
49
+ stoppt die entschärfte Prüfung — `--no-verify`,
45
50
  `|| true`, ein in `tail` gepipeter Test, ein mitten im Flug ergänzter Skip —
46
51
  und die Stop-Regel verweigert einen Fertigstellungsanspruch, den das
47
52
  Evidenzprotokoll der Sitzung nicht stützt. Sie verweigert den Zug; sie kann
@@ -49,7 +54,7 @@ auf dieselbe Weise.
49
54
  - **Forschung kommt mit eigener Bibliothek.** Forschungsaufgaben laufen über
50
55
  OpenResearch, mit einer integrierten Bibliothek aus 98 Upstream-Skills, die
51
56
  Eintrag für Eintrag geladen wird, damit der Kontext klein bleibt.
52
- - **Jede Regel hat einen Ausschalter.** Siebzehn Kill-Switches — dazu
57
+ - **Jede Regel hat einen Ausschalter.** Siebzehn Regel-Schalter — dazu
53
58
  Repo-Markierungen — entfernen den Regeltext aus der Sitzung; die Regel
54
59
  stoppt damit wirklich, statt nur als aus zu erscheinen.
55
60
  - **Eine feste Antwortform.** Antworten sind türkisch, sofern Sie keine andere Sprache wählen, und
@@ -81,8 +86,14 @@ das Modell in beiden Armen kaum schummelte:
81
86
  - **Eine Schwachstelle im Anspruchsleser der Stop-Regel:** Er markierte
82
87
  115/132 Läufe mit tezgah und 90/131 ohne, aber nur 10% bzw. 20% seiner
83
88
  Markierungen waren echte Fertig-Meldungen. Mit tezgah antwortete der Agent
84
- auf Türkisch, und der Leser zählt `doğrulandı` (verifiziert) bei einer
85
- Teilkorrektur als Anspruch. Das ist festgehalten, aber noch nicht behoben.
89
+ auf Türkisch, und der Leser zählte `doğrulandı` (verifiziert) bei einer
90
+ Teilkorrektur als Anspruch, selbst neben einem `doğrulanmadı` (nicht
91
+ verifiziert) für den fehlschlagenden Test. Diese Form ist behoben (Commit
92
+ 9cb4d1d; Recall auf der zurückgehaltenen Menge 0.857, unter der Schwelle
93
+ von 0.9 des Plans). Ein engerer Rest bleibt: Eine türkische Teilkorrektur
94
+ ohne Eingeständniswort (`hâlâ başarısız`, schlägt noch fehl; `kısmen`,
95
+ teilweise) liest sich weiter als fertig und verifiziert, während ihr
96
+ englisches Gegenstück nur als Verifikation gilt.
86
97
 
87
98
  Der Lauf hatte Messmängel, darunter Agenten in beiden Armen, die die
88
99
  Grundwahrheit des Benchmarks lesen konnten. Die Aggregate, die Zählungen pro
@@ -94,8 +105,12 @@ Aufgabe und jede Einschränkung stehen im
94
105
  ## Installation
95
106
 
96
107
  Eine Zeile, auf macOS, Linux oder WSL (Python 3.10+, `curl`, `tar`). Sie lädt
97
- die neueste Version herunter, prüft ihre sha256 und rüstet jeden gefundenen
98
- Host (Claude Code über dessen eigene `claude plugin`-CLI):
108
+ die neueste Version herunter, prüft ihre sha256, rüstet jeden gefundenen Host
109
+ (Claude Code über dessen eigene `claude plugin`-CLI) und installiert die
110
+ fehlenden optionalen Werkzeuge, die tezgah selbst nutzt (orx;
111
+ `TEZGAH_NO_DEPS=1` überspringt sie). Die eigene CLI eines Hosts
112
+ (cursor-agent, pnpm, dsh) installiert es nie: Es gibt stattdessen den Befehl
113
+ aus oder führt ihn unter `tezgah-setup --install --host-deps` aus.
99
114
 
100
115
  ```bash
101
116
  curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
@@ -116,18 +131,24 @@ gerüstet ist.
116
131
  `~/.omp/agent/RULES.md`). Claude Codes Hooks kommen in einem Plugin, das über
117
132
  `claude plugin` registriert wird; ohne `claude`-CLI bleibt Claude ungerüstet,
118
133
  und der Bericht sagt es.
119
- - **Agent-Dateien in Ihren Repositories.** In den konfigurierten Wurzeln
120
- schreibt eine Sitzung Subagent-Dateien nach `.claude/agents/`,
121
- `.codex/agents/` und `.opencode/agents/` und trägt diese Verzeichnisse in die
122
- eigene `.git/info/exclude` des Klons ein (`TEZGAH_NO_EXCLUDE=1` stoppt das).
134
+ - **Agent-Dateien.** Die Installation schreibt tezgahs Subagent-Rollen nach
135
+ `~/.claude/agents/`, `$CODEX_HOME/agents/` (Standard `~/.codex/agents/`) und
136
+ `~/.omp/agent/agents/`. In den konfigurierten Wurzeln schreibt eine Sitzung
137
+ sie in die `.cursor/agents/` und `.opencode/agents/` des Repositorys und
138
+ trägt diese Verzeichnisse in die eigene `.git/info/exclude` des Klons ein
139
+ (`TEZGAH_NO_EXCLUDE=1` stoppt das).
123
140
  - **Eine tägliche Update-Prüfung.** Die Statuszeile fragt höchstens einmal am
124
141
  Tag nach einer neueren Version; `~/.config/tezgah/update-check-off` oder
125
142
  `TEZGAH_UPDATE_CHECK=0` schaltet sie ab.
126
143
  - **orx.** Die Installation lädt die OpenResearch-CLI, über die
127
144
  Forschungsaufgaben laufen; `TEZGAH_NO_DEPS=1` überspringt sie.
128
- - **Antwortsprache.** Antworten sind standardmäßig türkisch, und die Stop-Regel
129
- hält sie dazu an. `--reply-lang en` verlangt Englisch, `any` Ihre eigene
130
- Sprache; beides wird nicht geprüft: `curl -fsSL … | sh -s -- --reply-lang en`.
145
+ - **Antwortsprache.** Eine Erstinstallation wählt Antworten in der Sprache
146
+ Ihrer Locale (`LANG` und verwandte Variablen), wenn tezgah dafür ein Paket
147
+ mitbringt (`tr`, `en`), sonst Englisch; eine bestehende Installation behält
148
+ ihre Sprache. `--language en` verlangt Englisch und `any` Ihre eigene
149
+ Sprache: `curl -fsSL … | sh -s -- --reply-lang en` (die ältere Schreibweise
150
+ des Installers für `--language`). Nur türkische Antworten prüft die
151
+ Stop-Regel.
131
152
 
132
153
  Lieber der Coding-Assistent erledigen? Fügen Sie dies in omp, Claude Code,
133
154
  Codex, Cursor oder opencode ein (der Prompt bleibt Englisch; der Assistent
@@ -157,7 +178,7 @@ Upgrades und die optionalen Integrationen stehen in der [Dokumentation](docs/REA
157
178
 
158
179
  ## Unterstützte Hosts
159
180
 
160
- **omp** (der primäre Host, gegen den entwickelt und verifiziert wird), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh** — dünne Adapter über einem gemeinsamen Kern.
181
+ **omp** (der primäre Host, gegen den entwickelt und verifiziert wird), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh**, **Qwen Code**, **Factory Droid**, **Command Code**, **GitHub Copilot CLI**, **Gemini CLI**, **Antigravity CLI**, **Goose**, **Amp** — dünne Adapter über einem gemeinsamen Kern. Bei den letzten acht hat noch kein Lauf ihrer Binaries gezeigt, dass sie ein Deny befolgen, und die letzten sechs sind allein nach der Dokumentation ihrer Hersteller angebunden ([Hosts](docs/hosts.md), Englisch).
161
182
 
162
183
  ## Wo die Tiefe liegt
163
184
 
@@ -166,4 +187,4 @@ Gate, Evidence-Ledger, Host-Adapter, Konfiguration und Entwicklung liegen in [do
166
187
  ## Lizenz
167
188
 
168
189
  MIT — siehe [LICENSE](LICENSE).
169
- Vendorte Skills (`ponytail`, `no-ai-slop`, `i-have-adhd`) tragen ihre eigenen MIT-Bedingungen, verzeichnet in [NOTICE](NOTICE).
190
+ Vendorte und adaptierte Skills und Texte Dritter behalten ihre eigenen Bedingungen (MIT oder Apache-2.0), verzeichnet in [NOTICE](NOTICE).