@ngockhoale/ukit 3.4.46 → 3.4.48

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 (66) hide show
  1. package/CHANGELOG.md +13 -5
  2. package/manifests/documentation.yaml +22 -0
  3. package/manifests/platform.full.yaml +27 -0
  4. package/package.json +4 -1
  5. package/scripts/dev/capture-omp-stall.mjs +246 -0
  6. package/scripts/dev/worktree-preflight.mjs +20 -1
  7. package/scripts/docs/render-instructions.mjs +29 -5
  8. package/src/core/agentRuntime/supervisor.js +15 -1
  9. package/src/core/diffPlan.js +38 -12
  10. package/src/core/executionContracts.js +67 -16
  11. package/src/core/metadata.js +4 -0
  12. package/src/core/runInstallPipeline.js +19 -2
  13. package/src/core/runtimeConfig.js +1 -1
  14. package/src/diagnostics/ompStallSnapshot.js +199 -0
  15. package/src/index/playbookRegistry.js +22 -3
  16. package/src/index/taskRouting.js +2 -2
  17. package/template_project/.claude/agents/bug-debugger.md +1 -0
  18. package/template_project/.claude/agents/code-reviewer.md +1 -0
  19. package/template_project/.claude/agents/feature-implementer.md +1 -0
  20. package/template_project/.claude/agents/handoff-planner.md +1 -0
  21. package/template_project/.claude/agents/ukit-small-task-maintainer.md +1 -0
  22. package/template_project/.claude/hooks/completion-gate.sh +1 -1
  23. package/template_project/.claude/hooks/delegation-gate.mjs +343 -0
  24. package/template_project/.claude/hooks/skill-router.sh +147 -6
  25. package/template_project/.claude/settings.json +8 -8
  26. package/template_project/.claude/ukit/index/playbook-registry.mjs +22 -3
  27. package/template_project/.claude/ukit/index/route-resolver.mjs +67 -15
  28. package/template_project/.claude/ukit/index/route-task.mjs +115 -37
  29. package/template_project/.claude/ukit/index/tier-lane.mjs +202 -0
  30. package/template_project/.claude/ukit/runtime/cron-operation-adapter.mjs +3 -1
  31. package/template_project/.claude/ukit/runtime/execution-ledger.mjs +306 -20
  32. package/template_project/.claude/ukit/runtime/hook-chain-runner.mjs +8 -0
  33. package/template_project/.claude/ukit/runtime/loop-state.mjs +3 -1
  34. package/template_project/.claude/ukit/runtime/observability-emit.mjs +38 -0
  35. package/template_project/.claude/ukit/runtime/playbook-execution.mjs +704 -0
  36. package/template_project/.claude/ukit/runtime/stop-coordinator.mjs +80 -3
  37. package/template_project/.omp/agents/bug-debugger.md +1 -0
  38. package/template_project/.omp/agents/code-reviewer.md +1 -0
  39. package/template_project/.omp/agents/feature-implementer.md +1 -0
  40. package/template_project/.omp/agents/handoff-planner.md +1 -0
  41. package/template_project/.omp/agents/ukit-small-task-maintainer.md +1 -0
  42. package/template_project/.omp/hooks/pre/ukit-bridge.js +254 -7
  43. package/template_project/ukit/storage/config.json +1 -1
  44. package/scripts/bench/data-foundation.mjs +0 -929
  45. package/scripts/bench/decision-runtime-baseline.mjs +0 -427
  46. package/scripts/bench/decision-runtime-variant.mjs +0 -626
  47. package/scripts/bench/goldTasks.json +0 -38
  48. package/scripts/bench/memory-ablation.mjs +0 -495
  49. package/scripts/bench/memory-baseline.mjs +0 -596
  50. package/scripts/bench/memory-bench.mjs +0 -661
  51. package/scripts/bench/memory-canary.mjs +0 -331
  52. package/scripts/bench/memory-corpus.mjs +0 -354
  53. package/scripts/bench/memory-gate.mjs +0 -389
  54. package/scripts/bench/memory-metrics.mjs +0 -179
  55. package/scripts/bench/outline-savings.mjs +0 -107
  56. package/scripts/bench/parallel-agents.mjs +0 -224
  57. package/scripts/bench/recorder-overhead.mjs +0 -204
  58. package/scripts/bench/runGold.mjs +0 -238
  59. package/scripts/bench/sqlite-spike.mjs +0 -451
  60. package/scripts/bench/subagent-orchestrator-corpus.mjs +0 -275
  61. package/scripts/bench/subagent-orchestrator-eval.mjs +0 -565
  62. package/scripts/bench/v3-ceremony.mjs +0 -220
  63. package/scripts/perf/audit-perf.mjs +0 -1195
  64. package/scripts/perf/diff-perf-findings.mjs +0 -136
  65. package/scripts/perf/perf-findings.json +0 -474
  66. package/scripts/perf/perf-measure.md +0 -271
@@ -1,271 +0,0 @@
1
- # perf-measure.md — raw measurement notes (TASK-233)
2
-
3
- Generated: 2026-09-20T23:07:33.744Z
4
-
5
- Appendix source for `docs/AI_REPORT/AI_REVIEW_BUGS_REPORT.md`. Every number in
6
- `perf-findings.json` comes from one of the four sources below. TASK-236 re-runs
7
- the identical command for the before/after table (SPEC §5). Two numbers from two
8
- different snapshots are only comparable once their provenance line agrees.
9
-
10
- ## 1. Reproduce
11
-
12
- ```bash
13
- node scripts/perf/audit-perf.mjs \
14
- --telemetry-dir "/Volumes/KHOA_EXTENAL/WORKING_PROJECT/WORKING/UKit/.ukit/storage/cache/hook-latency" \
15
- --out "/Volumes/KHOA_EXTENAL/WORKING_PROJECT/WORKING/UKit/scripts/perf/perf-findings.json"
16
- node scripts/perf/diff-perf-findings.mjs <earlier-snapshot>.json scripts/perf/perf-findings.json
17
- node --test tests/handoff/c33/perfFindings.test.js
18
-
19
- - root: `/Volumes/KHOA_EXTENAL/WORKING_PROJECT/WORKING/UKit`
20
- - settings.json: `/Volumes/KHOA_EXTENAL/WORKING_PROJECT/WORKING/UKit/template_project/.claude/settings.json`
21
- - hooks resolved from: `NOT FOUND`
22
- - telemetry: `/Volumes/KHOA_EXTENAL/WORKING_PROJECT/WORKING/UKit/.ukit/storage/cache/hook-latency` — 62854 rows in 120 files
23
- - snapshot provenance: generatedAt `2026-09-20T23:07:33.744Z`, telemetryRows: 62854, telemetryFiles: 120 — hooks append continuously, so a report is a point-in-time view, not a stable dataset
24
- - benchmark iterations per subject: 2
25
-
26
- ## 2. Process floor (live spawnSync, ms)
27
-
28
- | subject | p50 | p95 | max |
29
- |---|---|---|---|
30
- | `bash -c true` | 3.13 | 3.13 | 3.13 |
31
- | `node -e 0` | 16.11 | 16.11 | 16.11 |
32
- | `node hook-telemetry.mjs --finish` | 19.50 | 19.50 | 19.50 |
33
-
34
- A hook row = wrapper bash + node runtime + advisory telemetry child = **3 processes**.
35
-
36
- ## 3. Telemetry append overhead (O5 — in-process `appendTelemetryRow`, ms)
37
-
38
- | subject | iterations | p50 | p95 | max |
39
- |---|---|---|---|---|
40
- | `appendTelemetryRow` → throwaway temp root | 2 | 0.407 | 0.407 | 0.407 |
41
-
42
- Writer: `template_project/.claude/ukit/runtime/hook-telemetry.mjs`. Measured against a temp project root, so auditing a tree never adds rows to the dataset it is counting.
43
-
44
- ## 4. Per-hook standalone re-run (`/bin/bash <script>` with `{}` on stdin, ms)
45
- | hook | p50 | p95 | max |
46
- |---|---|---|---|
47
- | _(no settings hook resolvable from this root)_ | | | |
48
-
49
- ## 5. Router/index helper cold start (ms)
50
-
51
- | helper | p50 | p95 | max |
52
- |---|---|---|---|
53
- | `skill-router.sh` | 105.2 | 105.2 | 105.2 |
54
- | `route-task.mjs` | 26.4 | 26.4 | 26.4 |
55
- | `query-index.mjs` | 23.6 | 23.6 | 23.6 |
56
- | `resolve-context.mjs` | 21.9 | 21.9 | 21.9 |
57
-
58
- ## 6. Per-hook telemetry (every hook with rows)
59
-
60
- | hook | n | p50 | p95 | max | total |
61
- |---|---|---|---|---|---|
62
- | `hook-chain-runner` | 9453 | 80 | 375 | 2020 | 1269815 |
63
- | `block-dangerous.sh` | 5107 | 83 | 237 | 426 | 461434 |
64
- | `sensitive-data-guard.sh` | 5001 | 45 | 91 | 1591 | 398855 |
65
- | `context-hardcap-gate.sh` | 5650 | 55 | 88 | 291 | 334184 |
66
- | `auto-allow-bash.sh` | 4864 | 50 | 86 | 285 | 264888 |
67
- | `compress-output.sh` | 4701 | 49 | 66 | 207 | 237025 |
68
- | `record-execution.sh` | 4880 | 39 | 63 | 178 | 207226 |
69
- | `handoff-model-guard.sh` | 5603 | 22 | 53 | 189 | 136670 |
70
- | `verification-guard.sh` | 3520 | 33 | 61 | 137 | 136027 |
71
- | `skill-router.sh` | 1089 | 52 | 134 | 311 | 68680 |
72
- | `protect-files.sh` | 1544 | 21 | 156 | 344 | 58507 |
73
- | `task-watchdog.sh` | 930 | 38 | 216 | 237 | 42736 |
74
- | `pre-edit-backup.sh` | 732 | 50 | 72 | 216 | 35743 |
75
- | `stale-spec-guard.sh` | 745 | 46 | 70 | 169 | 34187 |
76
- | `post-edit-verify.sh` | 716 | 43 | 60 | 145 | 32444 |
77
- | `vision-router.sh` | 325 | 73 | 220 | 395 | 29834 |
78
- | `record-execution.mjs` | 2864 | 5 | 16 | 53 | 17607 |
79
- | `context-window-guard.sh` | 325 | 45 | 84 | 109 | 15798 |
80
- | `sensitive-data-guard.mjs` | 2812 | 4 | 6 | 15 | 11498 |
81
- | `completion-gate.sh` | 119 | 80 | 108 | 174 | 9881 |
82
- | `handoff-resume.sh` | 122 | 31 | 55 | 97 | 4307 |
83
- | `block-dangerous.mjs` | 1632 | 1 | 2 | 3 | 2334 |
84
- | `project-important.sh` | 47 | 38 | 61 | 62 | 1962 |
85
- | `auto-prune-bash.sh` | 19 | 34 | 44 | 44 | 679 |
86
- | `reset-compact-pressure.sh` | 19 | 34 | 38 | 38 | 647 |
87
- | `probe-source-only.sh` | 20 | 10 | 22 | 22 | 216 |
88
- | `probe-s2.sh` | 15 | 10 | 25 | 25 | 164 |
89
-
90
- ## 7. Stdin stage vs execution split (O3 — the wall-time tail attributed)
91
-
92
- A row's `elapsedMs` is the stdin stage plus the hook's own execution. `stageMs`
93
- (direct rows) and `stdinStageMs` (chain rows) are the first half — the producer's
94
- time, not the hook's — and `exec` below is the remainder, derived from the SAME
95
- row so the two halves always sum to it. A row carrying neither field predates the
96
- split or never staged stdin: it is excluded, never counted as a 0ms stage.
97
-
98
- - rows with the split: 0 of 62854
99
- - overall: stage n/ams p50 / n/ams p95, exec n/ams p50 / n/ams p95
100
-
101
- | hook | field | n | stage p50 | stage p95 | exec p50 | exec p95 |
102
- |---|---|---|---|---|---|---|
103
- | _(no row carries the split on this tree)_ | | | | | | |
104
-
105
- ## 8. Per tool / per event cost (chain-runner total where present, else direct sum)
106
-
107
- | scope | calls | cost p50 | cost p95 | hook rows/call p50 | direct / chain-runner calls |
108
- |---|---|---|---|---|---|
109
- | PostToolUse Bash | 4701 | 87 | 150 | 2 | 2406 / 2295 |
110
- | PostToolUse Edit | 610 | 129 | 222 | 3 | 351 / 259 |
111
- | PostToolUse Glob | 60 | 78 | 117 | 2 | 0 / 60 |
112
- | PostToolUse Grep | 275 | 15 | 101 | 2 | 0 / 275 |
113
- | PostToolUse Read | 1994 | 37 | 122 | 2 | 393 / 1601 |
114
- | PostToolUse Write | 103 | 132 | 219 | 4 | 46 / 57 |
115
- | PreToolUse Bash | 4853 | 307 | 474 | 6 | 2519 / 2334 |
116
- | PreToolUse Edit | 616 | 328 | 432 | 6 | 356 / 260 |
117
- | PreToolUse Glob | 60 | 59 | 74 | 2 | 0 / 60 |
118
- | PreToolUse Grep | 275 | 7 | 74 | 2 | 0 / 275 |
119
- | PreToolUse Read | 2005 | 39 | 71 | 2 | 404 / 1601 |
120
- | PreToolUse Write | 112 | 344 | 418 | 7 | 46 / 66 |
121
- | event (unattributed) (clustered, gap ≤ 1500ms) | 775 | 313 | 1567 | 1 | 752 / 23 |
122
- | event PostToolUse (clustered, gap ≤ 1500ms) | 7886 | 84 | 154 | 2 | 3339 / 4547 |
123
- | event PreCompact (clustered, gap ≤ 1500ms) | 6 | 49 | 53 | 1 | 0 / 6 |
124
- | event PreToolUse (clustered, gap ≤ 1500ms) | 8045 | 255 | 442 | 6 | 3431 / 4614 |
125
- | event SessionEnd (clustered, gap ≤ 1500ms) | 1 | 2020 | 2020 | 1 | 0 / 1 |
126
- | event SessionStart (clustered, gap ≤ 1500ms) | 113 | 119 | 289 | 2 | 38 / 75 |
127
- | event Stop (clustered, gap ≤ 1500ms) | 116 | 81 | 111 | 1 | 113 / 3 |
128
- | event UserPromptSubmit (clustered, gap ≤ 1500ms) | 349 | 291 | 582 | 4 | 200 / 149 |
129
-
130
- ## 9. Hook multiplicity proof (repeat-fire check)
131
-
132
- | hook | max fires in one tool call | calls observed | fire-count distribution |
133
- |---|---|---|---|
134
- | `auto-allow-bash.sh` | 6 | 4859 | {"1":4858,"6":1} |
135
- | `auto-prune-bash.sh` | 2 | 17 | {"1":15,"2":2} |
136
- | `block-dangerous.mjs` | 1 | 1632 | {"1":1632} |
137
- | `block-dangerous.sh` | 24 | 3651 | {"1":3475,"2":59,"3":55,"6":1,"20":1,"22":58,"23":1,"24":1} |
138
- | `completion-gate.sh` | 3 | 117 | {"1":116,"3":1} |
139
- | `compress-output.sh` | 3 | 4699 | {"1":4698,"3":1} |
140
- | `context-hardcap-gate.sh` | 46 | 5601 | {"1":5599,"5":1,"46":1} |
141
- | `context-window-guard.sh` | 4 | 295 | {"1":272,"2":17,"3":5,"4":1} |
142
- | `handoff-model-guard.sh` | 46 | 5553 | {"1":5550,"2":1,"5":1,"46":1} |
143
- | `handoff-resume.sh` | 4 | 109 | {"1":99,"2":8,"3":1,"4":1} |
144
- | `post-edit-verify.sh` | 4 | 713 | {"1":712,"4":1} |
145
- | `pre-edit-backup.sh` | 6 | 727 | {"1":726,"6":1} |
146
- | `probe-s2.sh` | 15 | 1 | {"15":1} |
147
- | `probe-source-only.sh` | 20 | 1 | {"20":1} |
148
- | `project-important.sh` | 5 | 37 | {"1":33,"2":1,"3":1,"4":1,"5":1} |
149
- | `protect-files.sh` | 26 | 992 | {"1":881,"2":57,"3":1,"10":52,"26":1} |
150
- | `record-execution.mjs` | 1 | 2864 | {"1":2864} |
151
- | `record-execution.sh` | 4 | 4875 | {"1":4873,"3":1,"4":1} |
152
- | `reset-compact-pressure.sh` | 2 | 17 | {"1":15,"2":2} |
153
- | `sensitive-data-guard.mjs` | 3 | 2806 | {"1":2801,"2":4,"3":1} |
154
- | `sensitive-data-guard.sh` | 21 | 4949 | {"1":4927,"2":15,"3":3,"4":1,"5":2,"21":1} |
155
- | `skill-router.sh` | 26 | 1029 | {"1":1000,"2":22,"3":5,"4":1,"26":1} |
156
- | `stale-spec-guard.sh` | 6 | 736 | {"1":731,"2":4,"6":1} |
157
- | `task-watchdog.sh` | 4 | 925 | {"1":922,"2":2,"4":1} |
158
- | `verification-guard.sh` | 6 | 3515 | {"1":3514,"6":1} |
159
- | `vision-router.sh` | 4 | 295 | {"1":272,"2":17,"3":5,"4":1} |
160
-
161
- ## 10. hook-chain-runner nested per-script (already-consolidated omp path)
162
-
163
- | script | n | p50 | p95 | max |
164
- |---|---|---|---|---|
165
- | `record-execution.mjs` | 2864 | 5 | 16 | 53 |
166
- | `sensitive-data-guard.mjs` | 2816 | 4 | 6 | 15 |
167
- | `handoff-model-guard.sh` | 2641 | 39 | 58 | 166 |
168
- | `context-hardcap-gate.sh` | 2635 | 68 | 82 | 152 |
169
- | `auto-allow-bash.sh` | 2350 | 72 | 82 | 426 |
170
- | `compress-output.sh` | 2295 | 73 | 92 | 169 |
171
- | `verification-guard.sh` | 2290 | 55 | 67 | 305 |
172
- | `record-execution.sh` | 1683 | 66 | 129 | 253 |
173
- | `block-dangerous.mjs` | 1636 | 1 | 2 | 3 |
174
- | `sensitive-data-guard.sh` | 1634 | 60 | 76 | 203 |
175
- | `block-dangerous.sh` | 737 | 79 | 150 | 425 |
176
- | `skill-router.sh` | 486 | 69 | 166 | 280 |
177
- | `protect-files.sh` | 336 | 50 | 59 | 360 |
178
- | `stale-spec-guard.sh` | 336 | 57 | 70 | 149 |
179
- | `pre-edit-backup.sh` | 325 | 59 | 72 | 115 |
180
- | `post-edit-verify.sh` | 316 | 67 | 90 | 184 |
181
- | `task-watchdog.sh` | 316 | 59 | 72 | 118 |
182
- | `vision-router.sh` | 160 | 83 | 161 | 231 |
183
- | `context-window-guard.sh` | 160 | 59 | 74 | 86 |
184
- | `project-important.sh` | 87 | 15 | 104 | 529 |
185
- | `auto-prune-bash.sh` | 86 | 26 | 64 | 75 |
186
- | `reset-compact-pressure.sh` | 86 | 26 | 56 | 70 |
187
- | `handoff-resume.sh` | 86 | 56 | 69 | 86 |
188
- | `reinject-context.sh` | 6 | 49 | 53 | 53 |
189
- | `completion-gate.sh` | 3 | 111 | 134 | 134 |
190
- | `t234-silent.sh` | 3 | 2 | 106 | 106 |
191
- | `session-episode.sh` | 1 | 2020 | 2020 | 2020 |
192
-
193
- ## 11. settings.json groups (spawn budget per call)
194
-
195
- | event | matcher | hooks | registered timeouts | spawns/call |
196
- |---|---|---|---|---|
197
- | PreToolUse | Read|Grep|Glob | sensitive-data-guard.mjs:8 | 18s | 3 |
198
- | PreToolUse | Edit|Write | context-hardcap-gate.sh:8 | 73s | 3 |
199
- | PreToolUse | Bash | verification-guard.sh:8 | 65s | 3 |
200
- | PostToolUse | Read|Grep|Glob | record-execution.mjs:8 | 18s | 3 |
201
- | PostToolUse | Edit|Write | task-watchdog.sh:8 | 34s | 3 |
202
- | PostToolUse | Bash | record-execution.mjs:8 | 30s | 3 |
203
- | UserPromptSubmit | (all) | context-window-guard.sh:10 | 60s | 3 |
204
- | Stop | (all) | completion-gate.sh:8 | 18s | 3 |
205
- | PreCompact | (all) | reinject-context.sh:8 | 18s | 3 |
206
- | SessionStart | (all) | handoff-resume.sh:8 | 50s | 3 |
207
- | SessionEnd | (all) | session-episode.sh:8 | 18s | 3 |
208
-
209
- ## 12. Recent hot-path additions (`git log --diff-filter=A`)
210
-
211
- | commit | date | subject | files added |
212
- |---|---|---|---|
213
- | `c0443e73` | 2026-09-20 | handoff: wave 2 — TASK-003 (block-dangerous.mjs port) + TASK-004 (record-execution.mjs + ledger emitter) + manifest module entries | `template_project/.claude/hooks/block-dangerous.mjs`, `template_project/.claude/hooks/record-execution.mjs` |
214
- | `79f747b6` | 2026-09-20 | handoff: wave 1 — TASK-001 (runner .mjs module-steps) + TASK-002 (sensitive-data-guard port + field-salvage) | `template_project/.claude/hooks/sensitive-data-guard.mjs`, `template_project/.claude/ukit/runtime/hook-field-salvage.mjs` |
215
- | `6b339905` | 2026-09-20 | handoff: wave 3 — TASK-231, TASK-232 | `template_project/.claude/hooks/session-episode.sh` |
216
- | `4903ee62` | 2026-09-18 | handoff: restore wave-4a files removed by stale worktree diff | `template_project/.claude/hooks/project-important.sh` |
217
- | `2b367850` | 2026-09-18 | handoff: wave 4a — TASK-041 (sessionstart wiring, hook template+manifest) | `template_project/.claude/hooks/project-important.sh` |
218
- | `5ffefb09` | 2026-09-18 | handoff: wave 3 — TASK-038 | `template_project/.claude/ukit/runtime/project-important.mjs`, `template_project/.claude/ukit/runtime/sensitive-value-scanner.mjs` |
219
- | `ebb846b8` | 2026-09-17 | handoff: R4.5 fix round 1 — TASK-018, TASK-023 | `template_project/.claude/ukit/runtime/hook-chain-budget.mjs` |
220
- | `c9da9734` | 2026-09-17 | handoff: wave 6 — TASK-025 copy-back (Stop coordinator) | `template_project/.claude/ukit/runtime/stop-coordinator.mjs` |
221
- | `a1361afd` | 2026-09-17 | handoff: wave 5 — TASK-031 copy-back | `template_project/.claude/ukit/runtime/hook-payload-store.mjs` |
222
- | `66787f98` | 2026-09-17 | handoff: wave 5 — TASK-019 copy-back | `template_project/.claude/ukit/runtime/hook-telemetry.mjs`, `template_project/.claude/ukit/runtime/hook-telemetry.sh` |
223
- | `3afc88e6` | 2026-09-17 | handoff: wave 5 — TASK-029 copy-back (context capacity negotiation) | `template_project/.claude/ukit/runtime/context-capacity.mjs` |
224
- | `6f224875` | 2026-09-17 | handoff: wave 3 — TASK-028 copy-back | `template_project/.claude/ukit/runtime/async-lock.mjs` |
225
- | `e4b647a3` | 2026-09-17 | handoff: wave 3 — TASK-016 copy-back | `template_project/.claude/ukit/runtime/hook-process.mjs` |
226
- | `7aa89361` | 2026-09-17 | handoff: wave 2 — TASK-015, TASK-017 | `template_project/.claude/ukit/runtime/transcript-tail.mjs` |
227
- | `2652bbff` | 2026-09-17 | milestone: TASK-014 bounded stdin transport (H01) | `template_project/.claude/ukit/runtime/hook-input.mjs`, `template_project/.claude/ukit/runtime/hook-input.sh` |
228
- | `6b40da83` | 2026-09-12 | handoff: wave 1 batch 2 — TASK-016 wall-clock watchdog hook (hardPolicy=split) | `template_project/.claude/hooks/task-watchdog.sh`, `template_project/.claude/ukit/runtime/task-watchdog.mjs` |
229
- | `0fc81692` | 2026-09-12 | handoff: wave 1 fix — anchor runtime-dir ignores, track lost TASK-014 CLI twin | `template_project/.claude/ukit/index/task-budget-validator.mjs` |
230
- | `cfc3b7f1` | 2026-09-08 | 2.3.0 — fail-closed sensitive-data gate; contract tables unified to executionContracts.js; tierLane wiring; evidence + vision hardening | `template_project/.claude/hooks/sensitive-data-guard.sh` |
231
-
232
- ## 13. Findings emitted
233
-
234
- | id | evidence | p50 | p95 | status | fixTask |
235
- |---|---|---|---|---|---|
236
- | `chain-pretooluse-read-grep-glob` | telemetry | 37 | 72 | confirmed | TASK-234 |
237
- | `chain-pretooluse-edit-write` | telemetry | 331 | 429 | confirmed | TASK-234 |
238
- | `chain-pretooluse-bash` | telemetry | 307 | 474 | confirmed | TASK-234 |
239
- | `chain-posttooluse-read-grep-glob` | telemetry | 37 | 118 | confirmed | TASK-234 |
240
- | `chain-posttooluse-edit-write` | telemetry | 130 | 222 | confirmed | TASK-234 |
241
- | `chain-posttooluse-bash` | telemetry | 87 | 150 | confirmed | TASK-234 |
242
- | `chain-userpromptsubmit-all` | telemetry | 291 | 582 | confirmed | TASK-234 |
243
- | `chain-stop-all` | telemetry | 81 | 111 | confirmed | TASK-234 |
244
- | `chain-precompact-all` | telemetry | 49 | 53 | confirmed | TASK-234 |
245
- | `chain-sessionstart-all` | telemetry | 119 | 289 | confirmed | TASK-234 |
246
- | `chain-sessionend-all` | telemetry | 2020 | 2020 | confirmed | TASK-234 |
247
- | `hook-hook-chain-runner` | telemetry | 80 | 375 | confirmed | TASK-234 |
248
- | `hook-skill-router-sh` | telemetry | 52 | 134 | confirmed | TASK-234 |
249
- | `hook-vision-router-sh` | telemetry | 73 | 220 | confirmed | TASK-234 |
250
- | `hook-block-dangerous-sh` | telemetry | 83 | 237 | confirmed | TASK-234 |
251
- | `hook-context-hardcap-gate-sh` | telemetry | 55 | 88 | confirmed | TASK-234 |
252
- | `hook-completion-gate-sh` | telemetry | 80 | 108 | confirmed | TASK-234 |
253
- | `hook-project-important-tail` | telemetry | n/a | 61 | confirmed | TASK-235 |
254
- | `record-execution-multiplicity` | telemetry | 39 | 63 | not-a-bug | - |
255
- | `index-router-cold-start` | telemetry | 291 | 582 | confirmed | TASK-234 |
256
- | `c29-c32-hot-path-additions` | git-log | n/a | n/a | confirmed | TASK-234 |
257
- | `existing-chain-runner-baseline` | telemetry | 80 | 375 | confirmed | TASK-234 |
258
- | `process-floor` | micro-benchmark | 38.73741700000001 | 38.73741700000001 | not-a-bug | TASK-234 |
259
- | `telemetry-append-overhead` | micro-benchmark | 0.407125 | 0.407125 | not-a-bug | - |
260
- | `stdin-stage-vs-exec-split` | unavailable | n/a | n/a | deferred | - |
261
- | `hook-sensitive-data-guard-mjs-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
262
- | `hook-context-hardcap-gate-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
263
- | `hook-verification-guard-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
264
- | `hook-record-execution-mjs-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
265
- | `hook-task-watchdog-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
266
- | `hook-context-window-guard-sh-10-unmeasured` | unavailable | n/a | n/a | deferred | - |
267
- | `hook-completion-gate-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
268
- | `hook-reinject-context-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
269
- | `hook-handoff-resume-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
270
- | `hook-session-episode-sh-8-unmeasured` | unavailable | n/a | n/a | deferred | - |
271
-