chill-agent 1.5.0 → 1.6.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 (187) hide show
  1. package/.claude-plugin/contrast-mcp-launcher.mjs +31 -0
  2. package/.claude-plugin/plugin.json +8 -3
  3. package/.cline-plugin/plugin.js +6 -0
  4. package/.codex-plugin/plugin.json +4 -3
  5. package/.cursor-plugin/marketplace.json +16 -0
  6. package/.cursor-plugin/plugin.json +2 -2
  7. package/.devin-plugin/plugin.json +2 -2
  8. package/.kimi-plugin/plugin.json +11 -29
  9. package/.omp-plugin/marketplace.json +15 -0
  10. package/.openclaw/skills/ponytail/SKILL.md +2 -7
  11. package/.openclaw/skills/ponytail-audit/SKILL.md +3 -6
  12. package/.openclaw/skills/ponytail-debt/SKILL.md +3 -4
  13. package/.openclaw/skills/ponytail-gain/SKILL.md +3 -4
  14. package/.openclaw/skills/ponytail-help/SKILL.md +3 -3
  15. package/.openclaw/skills/ponytail-review/SKILL.md +3 -6
  16. package/.opencode/plugins/ponytail.mjs +1 -1
  17. package/.qoder-plugin/plugin.json +12 -26
  18. package/AGENTS.md +32 -19
  19. package/__init__.py +1 -1
  20. package/assets/antislop-banner.png +0 -0
  21. package/assets/band/band.png +0 -0
  22. package/assets/band/board.png +0 -0
  23. package/assets/benchmark-3model.svg +21 -0
  24. package/assets/benchmark-agentic.svg +62 -0
  25. package/assets/codex-icon.png +0 -0
  26. package/assets/compare/code/after.webp +0 -0
  27. package/assets/compare/code/before.webp +0 -0
  28. package/assets/compare/text/after.webp +0 -0
  29. package/assets/compare/text/before.webp +0 -0
  30. package/assets/compare/ui/w-all.webp +0 -0
  31. package/assets/compare/ui/w-antislop.webp +0 -0
  32. package/assets/compare/ui/w-design.webp +0 -0
  33. package/assets/compare/ui/without.webp +0 -0
  34. package/assets/logo-dark.png +0 -0
  35. package/assets/logo-dark.svg +115 -0
  36. package/assets/logo-greenpt-dark.svg +27 -0
  37. package/assets/logo-greenpt.svg +27 -0
  38. package/assets/logo.png +0 -0
  39. package/assets/photoreunion-logo-dark.svg +4 -0
  40. package/assets/photoreunion-logo-light.svg +4 -0
  41. package/assets/profile.png +0 -0
  42. package/assets/retriever-logo-dark.svg +4 -0
  43. package/assets/retriever-logo-light.svg +4 -0
  44. package/assets/stories-banner.png +0 -0
  45. package/assets/v5/audit-es.png +0 -0
  46. package/assets/v5/audit-ja.png +0 -0
  47. package/assets/v5/audit-ko.png +0 -0
  48. package/assets/v5/audit-zh-CN.png +0 -0
  49. package/assets/v5/audit.png +0 -0
  50. package/assets/v5/beforeafter-es.png +0 -0
  51. package/assets/v5/beforeafter-ja.png +0 -0
  52. package/assets/v5/beforeafter-ko.png +0 -0
  53. package/assets/v5/beforeafter-zh-CN.png +0 -0
  54. package/assets/v5/beforeafter.png +0 -0
  55. package/assets/v5/chart-es.png +0 -0
  56. package/assets/v5/chart-ja.png +0 -0
  57. package/assets/v5/chart-ko.png +0 -0
  58. package/assets/v5/chart-zh-CN.png +0 -0
  59. package/assets/v5/chart.png +0 -0
  60. package/assets/v5/hero-es.jpg +0 -0
  61. package/assets/v5/hero-ja.jpg +0 -0
  62. package/assets/v5/hero-ko.jpg +0 -0
  63. package/assets/v5/hero-zh-CN.jpg +0 -0
  64. package/assets/v5/hero.jpg +0 -0
  65. package/assets/v5/ladder-es.png +0 -0
  66. package/assets/v5/ladder-ja.png +0 -0
  67. package/assets/v5/ladder-ko.png +0 -0
  68. package/assets/v5/ladder-zh-CN.png +0 -0
  69. package/assets/v5/ladder.png +0 -0
  70. package/assets/v5/review-es.png +0 -0
  71. package/assets/v5/review-ja.png +0 -0
  72. package/assets/v5/review-ko.png +0 -0
  73. package/assets/v5/review-zh-CN.png +0 -0
  74. package/assets/v5/review.png +0 -0
  75. package/assets/v5/tests-es.png +0 -0
  76. package/assets/v5/tests-ja.png +0 -0
  77. package/assets/v5/tests-ko.png +0 -0
  78. package/assets/v5/tests-zh-CN.png +0 -0
  79. package/assets/v5/tests.png +0 -0
  80. package/assets/waitlist-banner-es.png +0 -0
  81. package/assets/waitlist-banner-ja.png +0 -0
  82. package/assets/waitlist-banner-ko.png +0 -0
  83. package/assets/waitlist-banner-zh-CN.png +0 -0
  84. package/assets/waitlist-banner.png +0 -0
  85. package/benchmarks/.env.example +2 -0
  86. package/benchmarks/agentic/README.md +201 -0
  87. package/benchmarks/agentic/answer.py +288 -0
  88. package/benchmarks/agentic/compare.py +93 -0
  89. package/benchmarks/agentic/complete.py +178 -0
  90. package/benchmarks/agentic/judge.py +198 -0
  91. package/benchmarks/agentic/run.py +543 -0
  92. package/benchmarks/agentic/tasks.py +1544 -0
  93. package/benchmarks/arms/baseline.js +2 -0
  94. package/benchmarks/arms/caveman-SKILL.md +67 -0
  95. package/benchmarks/arms/caveman.js +8 -0
  96. package/benchmarks/arms/ponytail.js +8 -0
  97. package/benchmarks/behavior.js +54 -0
  98. package/benchmarks/behavior.yaml +40 -0
  99. package/benchmarks/correctness.js +291 -0
  100. package/benchmarks/loc.js +17 -19
  101. package/benchmarks/promptfooconfig.gemini.yaml +32 -0
  102. package/benchmarks/promptfooconfig.gpt-newest.yaml +33 -0
  103. package/benchmarks/promptfooconfig.yaml +41 -0
  104. package/benchmarks/results/2026-06-12-caveman-vs-ponytail.md +71 -0
  105. package/benchmarks/results/2026-06-12-v4-hardening-vs-caveman.md +125 -0
  106. package/benchmarks/results/2026-06-15-llama3.2-local.md +82 -0
  107. package/benchmarks/results/2026-06-16-correctness-gate-fix.md +113 -0
  108. package/benchmarks/results/2026-06-16-robustness-audit.md +135 -0
  109. package/benchmarks/results/2026-06-17-agentic-safety.md +164 -0
  110. package/benchmarks/results/2026-06-17-cost-verification.md +93 -0
  111. package/benchmarks/results/2026-06-18-agentic.md +219 -0
  112. package/benchmarks/results/2026-06-22-issue-245-217-comprehension.md +98 -0
  113. package/benchmarks/results/2026-10-07-agentic.md +186 -0
  114. package/cli/index.mjs +241 -0
  115. package/cli/lib/banner.mjs +21 -0
  116. package/cli/lib/install.mjs +498 -0
  117. package/cli/lib/settings.mjs +48 -0
  118. package/cli/package-lock.json +87 -0
  119. package/cli/package.json +42 -0
  120. package/cli/scripts/smoke-test.mjs +95 -0
  121. package/cli/scripts/smoke-worker.mjs +411 -0
  122. package/cli/scripts/sync-skills.mjs +81 -0
  123. package/examples/email-validation.md +156 -0
  124. package/examples/group-by.md +35 -0
  125. package/examples/infinite-scroll.md +58 -0
  126. package/examples/number-formatting.md +37 -0
  127. package/examples/rate-limit.md +272 -0
  128. package/examples/react-countdown.md +390 -0
  129. package/examples/url-params.md +41 -0
  130. package/gemini-extension.json +2 -2
  131. package/hooks/band/board.ts +560 -0
  132. package/hooks/band/logo.ts +3 -0
  133. package/hooks/band/metrics.ts +311 -0
  134. package/hooks/band/register.tsx +495 -0
  135. package/hooks/band/types.d.ts +34 -0
  136. package/hooks/claude-band.json +6 -0
  137. package/hooks/claude-codex-hooks.json +34 -4
  138. package/hooks/copilot-hooks.json +12 -2
  139. package/hooks/cursor-hooks.json +2 -2
  140. package/hooks/ponytail-band-import.js +274 -0
  141. package/hooks/ponytail-config.js +175 -0
  142. package/hooks/ponytail-map.js +111 -0
  143. package/hooks/ponytail-subagent.js +94 -0
  144. package/hooks/qoder-hooks.json +19 -4
  145. package/i18n/README.ko.md +230 -0
  146. package/package.json +12 -7
  147. package/pi-extension/test/extension.test.js +367 -0
  148. package/pi-extension/test/helpers.test.js +179 -0
  149. package/plugin.yaml +21 -12
  150. package/rules/antislop.mdc +18 -0
  151. package/scripts/build-openclaw-skills.js +60 -0
  152. package/scripts/check-repo.mjs +389 -0
  153. package/scripts/publish-openclaw-skills.js +75 -0
  154. package/scripts/skill-index.mjs +81 -0
  155. package/skills/antislop/SKILL.md +700 -0
  156. package/skills/antislop/VERSION +1 -0
  157. package/skills/antislop-code/SKILL.md +128 -0
  158. package/skills/antislop-copywriting/SKILL.md +407 -0
  159. package/skills/antislop-human/LICENSE-web-quality-skills +21 -0
  160. package/skills/antislop-human/SKILL.md +204 -0
  161. package/skills/antislop-human/contrast-check.py +168 -0
  162. package/skills/antislop-human/contrast-mcp.py +121 -0
  163. package/skills/antislop-human/references/A11Y-PATTERNS.md +249 -0
  164. package/skills/antislop-human/references/WCAG.md +127 -0
  165. package/skills/antislop-layoutmobile/SKILL.md +170 -0
  166. package/skills/antislop-ui/LICENSE-web-quality-skills +21 -0
  167. package/skills/antislop-ui/SKILL.md +344 -0
  168. package/skills/antislop-ui/references/CORE-WEB-VITALS.md +181 -0
  169. package/skills/antislop-ui/references/WEB-BASELINE.md +28 -0
  170. package/skills/plugin.json +5 -0
  171. package/src/package.json +3 -0
  172. package/tests/activation-map.test.js +63 -0
  173. package/tests/band-import.test.js +111 -0
  174. package/tests/band.test.tsx +520 -0
  175. package/tests/behavior.test.js +80 -0
  176. package/tests/gemini-extension.test.js +2 -2
  177. package/tests/grok-plugin.test.js +1 -1
  178. package/tests/hermes-plugin.test.js +1 -1
  179. package/tests/hooks-windows.test.js +205 -0
  180. package/tests/kimi-plugin.test.js +1 -1
  181. package/tests/map.test.js +30 -0
  182. package/tests/package-scripts.test.js +35 -0
  183. package/tests/package.test.js +23 -0
  184. package/tests/uninstall.test.js +202 -0
  185. /package/bin/{chill-agent.js → chill-agent.mjs} +0 -0
  186. /package/tests/{manifests.test.js → manifests.test.mjs} +0 -0
  187. /package/tests/{rules.test.js → rules.test.mjs} +0 -0
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="128" viewBox="0 0 120 128">
2
+ <image x="0" y="0" width="96" height="96" xlink:href="data:image/png;base64,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"/>
3
+ <text x="0" y="122" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" font-weight="600" fill="#e6edf3">Retriever</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="128" viewBox="0 0 120 128">
2
+ <image x="0" y="0" width="96" height="96" xlink:href="data:image/png;base64,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"/>
3
+ <text x="0" y="122" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" font-weight="600" fill="#1f2328">Retriever</text>
4
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ # Copy to .env (gitignored) and fill in. promptfoo reads this automatically.
2
+ ANTHROPIC_API_KEY=sk-ant-...
@@ -0,0 +1,201 @@
1
+ # Agentic benchmark
2
+
3
+ The single-shot benchmark (`../promptfooconfig.yaml`) measures one prompt, one completion.
4
+ A fair critique ([#126](https://github.com/DietrichGebert/ponytail/issues/126)) is that this
5
+ does not reflect how a coding agent is actually used, and that counting lines of a
6
+ conversational answer (which dumps multiple options and commentary) inflates the baseline.
7
+
8
+ This benchmark answers that directly: every cell is a **real headless Claude Code session**
9
+ editing a **seeded codebase**, scored on the files it leaves behind.
10
+
11
+ ## What is different
12
+
13
+ | | single-shot | agentic (this) |
14
+ |---|---|---|
15
+ | unit | one prompt -> one completion | a Claude Code session in a temp workspace |
16
+ | baseline | bare model (emits prose + options) | the **real agent** with no skill (the fair baseline) |
17
+ | task | "write me X" | "edit this existing file" (a seeded stub) |
18
+ | correctness | runs the code | safety tier runs the code; LOC tier counts the diff |
19
+ | **safety** | not measured | **measured: the code is run against adversarial input** |
20
+ | over-engineering | total LOC (incl. commentary) | **source** LOC + **source** file count (tests excluded) |
21
+ | tests written | n/a | tracked as a *positive* signal, never counted as bloat |
22
+
23
+ The point of going agentic is honesty, not flattery. The baseline here is Claude Code doing
24
+ the job properly, so any difference is the skill's effect, not the model being chatty.
25
+
26
+ ## Arms
27
+
28
+ `baseline` (no skill) · `ponytail` · `caveman` · `yagni` ("Follow YAGNI principles.") ·
29
+ `yagni-oneliner` ("Follow YAGNI principles, and prefer one-liner solutions.")
30
+
31
+ The last two are the seven-word prompts from the #126 writeup, included on purpose: if a one-line
32
+ instruction matches ponytail, the benchmark should show it.
33
+
34
+ `ponytail2` loads a candidate plugin from `PONYTAIL2_PLUGIN_DIR`, next to the released `ponytail`. That is how
35
+ Ponytail 5 was measured against the previous Ponytail (v4.13) and no skill in one run.
36
+
37
+ ## Tasks
38
+
39
+ Two tiers. **LOC tier**: 12 one-line tickets against the real template repo (6 frontend
40
+ components, 6 backend endpoints), each a feature that does *not* already exist, so the agent
41
+ chooses how much to build; LOC is the `git diff`. **Safety tier**: 7 surgical "implement this
42
+ function" tasks below, each seeding a starter file the agent must modify; the safety requirement is
43
+ left **implicit** (the way a real ticket reads), so an arm that forgets to be safe is caught, and
44
+ the produced function is then executed against adversarial input. Every safety check is
45
+ deterministic and stdlib-only.
46
+
47
+ LOC-tier tickets: date picker · color picker · command palette · file dropzone · multi-step
48
+ wizard · star rating · duplicate item · search by title · count items · archive item ·
49
+ bulk-delete · CSV export.
50
+
51
+ Since 2026-10 the suite has **39 tasks**: the 12 template tickets, 18 surgical tasks with hidden checks
52
+ (the safety tasks below plus bug fixes, refunds, a privacy case, and renames or format changes that must
53
+ reach every caller), and 9 open "build me" and "show me" requests where the agent picks the scope. The
54
+ full list is in `tasks.py`.
55
+
56
+ Safety-tier tasks:
57
+
58
+ | task | the job | safety axis (deterministic) | over-engineering room |
59
+ |---|---|---|---|
60
+ | `safe-path` | implement `safe_upload_path` | an untrusted `../..` filename must not escape base dir | path-handling helper vs framework |
61
+ | `rate-limit` | implement `RateLimiter.allow` | one client exhausting its quota must not block others (global counter = DoS) | dict+timestamps vs middleware |
62
+ | `sql-user` | implement `get_user` | `' OR '1'='1` must not leak rows (parameterize) | little |
63
+ | `auth-token` | implement `verify_token` | a tampered token must be rejected (verify HMAC) | little |
64
+ | `csv-sum` | implement `sum_amount` | a malformed row must not crash the sum (data loss) | little |
65
+ | `cache` | add caching to `compute` | (axis = correctness: caching must actually work) | `@lru_cache` vs a hand-rolled TTL class |
66
+ | `critic-email` | implement `is_valid_email` | a newline-injection address `ok@ok.com\n…` must be rejected (`re.match` anchors the start only) | the critique's own task #1 (#126) |
67
+
68
+ The `bad` reference for each safety task is the lazy-but-plausible version: correct on the happy
69
+ path, unsafe on the adversarial input. That is exactly the code a binary correctness gate passes.
70
+
71
+ ## Metrics
72
+
73
+ - **correct** (gate): produced code runs and returns the right answer on normal input.
74
+ - **safe** (gate): produced code survives the adversarial input. Deterministic, stdlib-only.
75
+ - **src_loc / src_files**: over-engineering proxy. **Tests are excluded** and tracked separately
76
+ (`wrote_tests_rate`), since writing a test is the discipline ponytail prescribes, not bloat.
77
+ - **cost / duration / turns**: straight from the Claude Code CLI JSON.
78
+
79
+ Every instrument ships a `good` and a `bad` reference and is verified by `--selftest` (the good
80
+ ref must pass, the bad ref must be caught) **before any API call**.
81
+
82
+ ### Over-engineering judge (`judge.py`)
83
+
84
+ Over-engineering is the one axis that resists a deterministic check, so it gets an LLM judge,
85
+ made auditable: a fixed model (`claude-sonnet-4-6`) at temperature 0, a published rubric, and
86
+ every score must name the specific construct it considers unnecessary (or "none"). It scores the
87
+ **source files only** (tests excluded). Rubric: `0` minimal/appropriate, `1` slightly more than
88
+ needed, `2` noticeably over-built, `3` clearly over-engineered (a framework for a one-off).
89
+
90
+ The judge is itself validated by `judge.py --selftest`: it must rank a deliberately
91
+ over-engineered reference strictly above the minimal one for the same task, or it is not trusted
92
+ on real submissions.
93
+
94
+ ```bash
95
+ python judge.py --selftest # validate the judge (small spend)
96
+ python judge.py --run runs/<stamp> # score every workspace's source
97
+ ```
98
+
99
+ ### Completeness judge (`complete.py`)
100
+
101
+ Fewer lines only counts as a win if the code still does the job. The LOC tier scores the open
102
+ feature tasks on `git diff` alone, with no deterministic check that the asked feature was
103
+ actually built, so an arm could "win" the LOC metric by shipping a stub. This pass closes that
104
+ hole: the same auditable LLM judge (fixed model, temperature 0, published rubric) rates how
105
+ **fully** each submission implements its task. Rubric: `0` stub/placeholder, `1` partial (core
106
+ behavior missing), `2` mostly complete (a stated requirement missing), `3` fully implements the
107
+ task. Read it **alongside** the LOC table, a low-LOC arm whose completeness also drops is doing
108
+ less, not less-bloated.
109
+
110
+ It judges only the tasks scored on size alone (`vibe-*`, `open-*`, `tmpl-*`). On the repo tasks the
111
+ judge sees the agent's diff, not the whole seeded repo; an answer given only in chat is judged from
112
+ the chat; `ponytail:` markers are neutralized so the judge stays blind; runs killed at the timeout are
113
+ counted apart instead of scored 0. Without an API key it runs through the `claude` CLI login (no
114
+ temperature setting there; the self-test gates it the same way).
115
+
116
+ Validated like the over-engineering judge: `--selftest` requires the judge to rank a complete
117
+ reference strictly above a stub before any real scoring is trusted. `--selftest-offline` checks
118
+ the gate logic with no API call (no key needed).
119
+
120
+ ```bash
121
+ python complete.py --selftest-offline # validate the gate logic, no API
122
+ python complete.py --selftest # validate the judge (small spend)
123
+ python complete.py --run runs/<stamp> # completeness-score every workspace
124
+ python complete.py --run runs/<stamp> --model claude-opus-5-5 --arms baseline,ponytail2 --workers 6
125
+ ```
126
+
127
+ ## Reproduce
128
+
129
+ Needs the `claude` CLI (this is the harness, no SDK), Python 3, an authenticated Claude Code, and a
130
+ clone of the template at the pinned commit (set `PONYTAIL_TMPL` to its path, or drop it at
131
+ `fixtures/full-stack-fastapi-template`):
132
+
133
+ ```bash
134
+ git clone https://github.com/fastapi/full-stack-fastapi-template
135
+ cd full-stack-fastapi-template && git checkout cd83fc1
136
+ ```
137
+
138
+ ```bash
139
+ python run.py --selftest # prove the instruments, no API -- run first
140
+ # LOC tier (12 real-repo features):
141
+ python run.py --task tmpl-fe-datepicker,tmpl-fe-colorpicker,tmpl-fe-command,tmpl-fe-dropzone,tmpl-fe-wizard,tmpl-fe-rating,tmpl-be-duplicate,tmpl-be-search,tmpl-be-count,tmpl-be-archive,tmpl-be-bulkdelete,tmpl-be-csv \
142
+ --arms baseline,caveman,ponytail,yagni-oneliner --models haiku --runs 4 --workers 6
143
+ # safety tier (7 surgical tasks):
144
+ python run.py --task safe-path,critic-email,rate-limit,sql-user,auth-token,csv-sum,cache \
145
+ --arms baseline,caveman,ponytail,yagni-oneliner --models haiku --runs 4 --workers 6
146
+ python run.py --rescore runs/<stamp> # recompute metrics offline, no API
147
+ ```
148
+
149
+ Agents only **write code**: `--strict-mcp-config` removes the browser and `--disallowedTools Bash`
150
+ blocks running a server, so no database, server, or login is needed. The LOC tier measures the
151
+ `git diff`; the safety scorer executes the produced function in-process. Each cell runs
152
+ `bypassPermissions` in its own fresh repo copy under `runs/<stamp>/` (gitignored, kept). `--workers
153
+ N` runs N isolated cells concurrently. Because workspaces are preserved, any metric change is
154
+ re-applied offline with `--rescore`, you never pay the API twice for a measurement tweak.
155
+
156
+ ## What this can and cannot show
157
+
158
+ - It **can** show whether a skill keeps code minimal *without* dropping safety **or
159
+ completeness**, on real multi-file edits, across model sizes, with variance. Less code that
160
+ also does less is caught by the completeness judge, not rewarded.
161
+ - It **cannot** claim production-readiness from six tasks, and a deterministic safety check is a
162
+ floor, not a proof of security. The over-engineering source-LOC proxy is supplemented by an
163
+ LLM judge (`judge.py`), and the "did it actually build the feature" question by a second
164
+ judge (`complete.py`).
165
+ - If the arms converge (everyone safe, similar size), the benchmark says so. It is built to be
166
+ able to disprove the skill's value, not only to confirm it.
167
+
168
+ ## Results
169
+
170
+ **2026-10-07, Ponytail 5, Opus 5.5, 5 runs, all 39 tasks** (`--arms baseline,ponytail,ponytail2 --models opus --runs 5`):
171
+
172
+ | vs no skill | lines of code | output tokens | cost | time | hidden checks passed |
173
+ |---|--:|--:|--:|--:|--:|
174
+ | **Ponytail 5** | **-53%** | **-45%** | **-26%** | **-41%** | **97%** |
175
+ | Ponytail (v4.13) | -48% | -43% | -16% | -38% | 96% |
176
+ | no skill | | | | | 96% |
177
+
178
+ 98% of risky logic ships with a test (no skill: 68%). Every cell ran in a fresh temp folder outside any git
179
+ repo and was moved to `runs/<stamp>/` afterwards; inside a repo, Claude Code shows the model recent commit
180
+ messages. Full writeup: [results/2026-10-07-agentic.md](../results/2026-10-07-agentic.md).
181
+
182
+ **Earlier: 2026-06-18, Haiku 4.5, `n=4`, previous Ponytail.** Two tiers:
183
+
184
+ - **12 real-repo features** (LOC via `git diff`): ponytail cuts **60–94%** on features with an
185
+ over-build trap (date picker 404→23, color picker 287→23, dropzone 251→95) and is a wash on
186
+ irreducible code (backend CRUD). It never writes more. Colin's one-liner prompt is erratic, great
187
+ on the color picker, near or above baseline on the date picker, wizard, and command palette.
188
+ - **6 surgical safety tasks** (produced code executed against adversarial input): baseline,
189
+ caveman, and ponytail are **100% safe** (20/20); `yagni-oneliner` is **95%** (19/20), it dropped
190
+ the path-traversal guard once on `safe-path`, the one task where it wrote the fewest lines. The
191
+ lines it cut were the guard.
192
+
193
+ Full writeup with per-task tables and analysis:
194
+ [results/2026-06-18-agentic.md](../results/2026-06-18-agentic.md).
195
+
196
+ > The earlier `results/2026-06-17-agentic-safety.md` run (the ~4% gap) is **superseded**: its
197
+ > baseline was contaminated by the ponytail plugin's `SessionStart` hook firing on every arm, so
198
+ > the baseline was secretly running ponytail. Isolation is now enforced with `--setting-sources
199
+ > project,local` plus a per-arm `--plugin-dir`, and every cell runs with
200
+ > `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`, because cells live inside
201
+ > this repo and would otherwise all load its `AGENTS.md` (the ponytail ruleset) and your memory.