runtime-gap-cursor.md
Subject: Cursor runtime parity on Robert's dev machine. Status: absent. Parity score is N/A, not zero. Measured: 2026-04-18.
Measured facts
Cursor binary is not on PATH on this machine:
$ which cursor
cursor not found
# exit code: 1
The bootstrap report confirms the same decision at the runtime-detection step:
$ jq '.runtimes[] | select(.name=="cursor")' .bootstrap-report.json
{
"name": "cursor",
"present": false,
"decision": "absent"
}
Source: /Users/robertboulos/projects/snappy-os/.bootstrap-report.json (lines 49-53, mode dry-run, ts 2026-04-18T20:36:46.633Z, bootstrap_version 0.2.0).
Why parity is N/A, not 0.0
state/log/parity.ndjson contains zero rows with runtime: "cursor". The parity table in program.md reports this correctly as n/a, but earlier CLAUDE.md prose implied Cursor was "synced for portability" without stating the honest consequence: we cannot verify any execution-time behavior from this machine.
Rule: rows with no data are explicit n/a, never zero. A score: 0 row means "runtime tried and failed." A missing row means "runtime was never tested here."
What sync does write
The repo does ship .cursorrules at the root:
$ ls /Users/robertboulos/projects/snappy-os/.cursorrules
.cursorrules
This file is maintained by state/bin/sync-runtimes.ts sync (see program.md § Self-bootstrap → Step 4). It carries the same content as CLAUDE.md so that any Cursor session opened in this repo inherits the instructions passively. Cursor has no documented hook system; the instruction file is the only mechanism.
What we do NOT know from this machine
- Whether
.cursorrulesis actually ingested at the claimed ~500 word limit on first turn. - Whether Cursor's built-in agent mode calls tools in a way compatible with the
state/bin/skills. - Whether a
UserPromptSubmit-equivalent exists.
All three require a machine with Cursor installed plus a parity probe run. See state/lint/parity-test.ts for the probe shape.
How to promote this from N/A to a real number
On a machine with Cursor installed:
cd ~/projects/snappy-os
# 1. confirm binary
which cursor # exit 0 expected
# 2. bootstrap (will flip present:true in report)
npx snappy-os bootstrap --apply
# 3. run parity harness against Cursor
npx tsx state/lint/parity-test.ts --runtime cursor
# 4. new rows append to state/log/parity.ndjson; re-aggregate
node -e 'const rows=require("fs").readFileSync("state/log/parity.ndjson","utf8").trim().split("\n").map(JSON.parse); const c=rows.filter(r=>r.runtime==="cursor"); console.log("n="+c.length, "mean="+(c.reduce((a,b)=>a+b.score,0)/c.length).toFixed(3))'
Until that runs, the honest answer is: absent = N/A. Do not extrapolate.
<!-- kernel-ok: wiki page documenting runtime absence with cited measurements -->