Hook Enforcement — 20260721T120000000Z-cursor-nano
144-trial babel relay through the same Cursor wrapper gate, model swapped to gpt-5.4-nano-low: warn detects 24/24 drifted relays but 10 ship anyway; enforce halts 25/25. Heavy caveat: 47 hop failures and 20 malformed audits thin the denominators.
Provenance
- Harness: Cursor CLI
- Version: cursor-agent 2026.07.17-3e2a980
- Model: gpt-5.4-nano-low
- Gate integration: wrapper
- Gate source: sema check CLI (RobinOppenstam/sema@feat/sema-check)
- Records path: experiments/cursor-hook/records/2026-07-21-nano/
Deviations
- Enforcement is wrapper-level (sema check runs before cursor-agent is invoked); cursor hook dispatch is server-gated off on this account, so the in-harness hook tier could not be tested
- The warn channel is prompt-prepension of the repair text, not hook-stdout context injection
- Frozen boundary prompts delivered via per-trial AGENTS.md plus the same inline-artifacts harness note as codex-hook
- Registry rebuilt from scenarios.yaml with sema's mint pipeline; all six stubs verified byte-identical to the frozen babel-hook stubs.json before the run
- Data quality: 47/144 trials hit hop timeouts (both 300s attempts) and 20 audit replies were malformed; nano's per-arm denominators are thinned accordingly
| Condition | Trials | Drift detection | Silent divergence | Drift halted | Task success | False halts | Malformed | Hop failed |
|---|---|---|---|---|---|---|---|---|
off |
48 | 9/23 | 14/23 | 9/23 | 12/48 | 7 | 10 | 18 |
warn |
48 | 24/24 | 0/24 | 11/24 | 15/48 | 6 | 10 | 15 |
enforce |
48 | 25/25 | 0/25 | 25/25 | 29/48 | 5 | 0 | 14 |
Drift-conditioned columns use drift-injected trials as the denominator; task success uses all trials in the condition.