# Round 1 precommitted oracle — compound-path fill correctness

Generated by `round1-oracle` (`spikes/editor-toolkit/round1-oracle`). Governed by `spec/CONTRACT_EDITOR_T4_SPIKE.md` Revision 6, Round 1 ("criterion 1, compound-path fill correctness"). No rendering crate was used to produce this file — every point below is derived from the typed `PathCommand` outline alone.

Two check classes, testing two different properties: **bounded-hole** (`gClef`, `timeSig8`, `accidentalFlat`, `noteheadHalf`) requires ≥3 ink and ≥3 must-be-background points inside a bounded hole; **disjoint-component** (`fClef`) has no bounded hole by design and instead requires ≥1 ink point inside each of its three filled subpaths, tagged with `subpath_index`.

## Render transform (pinned)

`device = (staff.x * scale + tx, ty - staff.y * scale); scale = 100 device px per staff space; tx/ty center the glyph's own flattened bounding box in a 1920x1080 target (pin 4); staff-space is y-up, device space is y-down`

- Flatten tolerance: `0.0005` staff-space units (Bezier chord deviation).
- Clearance floor: `8` device px.

## Overall status

| glyph | requirement | satisfied | ring_signed_areas |
|---|---|---|---|
| `gClef` | BoundedHole | **true** | [8.702, -0.691, -1.803, -0.509] |
| `timeSig8` | BoundedHole | **true** | [2.674, -0.435, -0.515] |
| `accidentalFlat` | BoundedHole | **true** | [1.040, -0.257] |
| `noteheadHalf` | BoundedHole | **true** | [0.903, -0.368] |
| `fClef` | DisjointComponents | **true** | [2.534, 0.153, 0.148] |

`fClef` is `satisfied = true` with zero background points — that is the correct, designed-for outcome for its `DisjointComponents` requirement class, not a shortfall. The `satisfied` column above is the field to read; `background_satisfied` alone would make that correct outcome indistinguishable from a bounded-hole glyph's genuine failure.

## `gClef`

- Requirement class: BoundedHole (≥3 ink, ≥3 background inside a bounded hole)
- Overall status: **satisfied = true**
- Subpaths: 4 (matches recorded 4)
- Ring signed areas (staff-space², shoelace, ring order): `[8.702, -0.691, -1.803, -0.509]`
- Bounding box (staff space): `[0.0, -2.631999969482422, 2.684000015258789, 4.392000198364258]`
- Outer contour ring index: 0
- Transform: scale=100, tx=825.800, ty=628.000, target=1920x1080
- background_required=true, background_satisfied=true
- subpath_coverage_required=false, subpath_coverage_satisfied=true
- Ink candidates found (>= 8px clearance): 27069
- Background/hole candidates found (>= 8px clearance): 18066
- Ink point spacing relaxed: false
- Background point spacing relaxed: false

| class | subpath_index | staff (x, y) | device (x, y) | clearance (device px) | hole evidence |
|---|---|---|---|---|---|
| Ink | - | (0.9400, -1.9220) | (919.80, 820.20) | 39.879 | - |
| Ink | - | (0.8500, -2.0520) | (910.80, 833.20) | 31.153 | - |
| Ink | - | (1.2700, 1.8880) | (952.80, 439.20) | 29.458 | - |
| Background | - | (1.7600, 3.2580) | (1001.80, 302.20) | 32.236 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (1.7000, 3.1180) | (995.80, 316.20) | 31.015 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (1.8200, 3.4080) | (1007.80, 287.20) | 29.839 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |

## `timeSig8`

- Requirement class: BoundedHole (≥3 ink, ≥3 background inside a bounded hole)
- Overall status: **satisfied = true**
- Subpaths: 3 (matches recorded 3)
- Ring signed areas (staff-space², shoelace, ring order): `[2.674, -0.435, -0.515]`
- Bounding box (staff space): `[0.07999999821186066, -1.0360000133514404, 1.6640000343322754, 1.0360000133514404]`
- Outer contour ring index: 0
- Transform: scale=100, tx=872.800, ty=540.000, target=1920x1080
- background_required=true, background_satisfied=true
- subpath_coverage_required=false, subpath_coverage_satisfied=true
- Ink candidates found (>= 8px clearance): 8030
- Background/hole candidates found (>= 8px clearance): 5882
- Ink point spacing relaxed: false
- Background point spacing relaxed: false

| class | subpath_index | staff (x, y) | device (x, y) | clearance (device px) | hole evidence |
|---|---|---|---|---|---|
| Ink | - | (1.3300, -0.1960) | (1005.80, 559.60) | 28.647 | - |
| Ink | - | (1.1200, -0.0460) | (984.80, 544.60) | 28.211 | - |
| Ink | - | (0.9600, 0.0140) | (968.80, 538.60) | 26.413 | - |
| Background | - | (0.6900, -0.5360) | (941.80, 593.60) | 34.514 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (0.8400, -0.5860) | (956.80, 598.60) | 31.745 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (1.0000, 0.5940) | (972.80, 480.60) | 29.916 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |

## `accidentalFlat`

- Requirement class: BoundedHole (≥3 ink, ≥3 background inside a bounded hole)
- Overall status: **satisfied = true**
- Subpaths: 2 (matches recorded 2)
- Ring signed areas (staff-space², shoelace, ring order): `[1.040, -0.257]`
- Bounding box (staff space): `[0.0, -0.699999988079071, 0.9039999842643738, 1.75600004196167]`
- Outer contour ring index: 0
- Transform: scale=100, tx=914.800, ty=592.800, target=1920x1080
- background_required=true, background_satisfied=true
- subpath_coverage_required=false, subpath_coverage_satisfied=true
- Ink candidates found (>= 8px clearance): 1381
- Background/hole candidates found (>= 8px clearance): 1175
- Ink point spacing relaxed: false
- Background point spacing relaxed: false

| class | subpath_index | staff (x, y) | device (x, y) | clearance (device px) | hole evidence |
|---|---|---|---|---|---|
| Ink | - | (0.7500, 0.3100) | (989.80, 561.80) | 14.124 | - |
| Ink | - | (0.7600, 0.1500) | (990.80, 577.80) | 13.243 | - |
| Ink | - | (0.1500, 0.3800) | (929.80, 554.80) | 12.985 | - |
| Background | - | (0.4000, 0.1200) | (954.80, 580.80) | 22.160 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (0.3700, -0.0300) | (951.80, 595.80) | 18.269 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (0.4600, 0.2600) | (960.80, 566.80) | 13.874 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |

## `noteheadHalf`

- Requirement class: BoundedHole (≥3 ink, ≥3 background inside a bounded hole)
- Overall status: **satisfied = true**
- Subpaths: 2 (matches recorded 2)
- Ring signed areas (staff-space², shoelace, ring order): `[0.903, -0.368]`
- Bounding box (staff space): `[0.0, -0.5, 1.1799999475479126, 0.5]`
- Outer contour ring index: 0
- Transform: scale=100, tx=901.000, ty=540.000, target=1920x1080
- background_required=true, background_satisfied=true
- subpath_coverage_required=false, subpath_coverage_satisfied=true
- Ink candidates found (>= 8px clearance): 949
- Background/hole candidates found (>= 8px clearance): 1919
- Ink point spacing relaxed: false
- Background point spacing relaxed: false

| class | subpath_index | staff (x, y) | device (x, y) | clearance (device px) | hole evidence |
|---|---|---|---|---|---|
| Ink | - | (0.4000, 0.2800) | (941.00, 512.00) | 12.348 | - |
| Ink | - | (0.7600, -0.2900) | (977.00, 569.00) | 12.308 | - |
| Ink | - | (0.8900, -0.2000) | (990.00, 560.00) | 11.678 | - |
| Background | - | (0.5900, 0.0000) | (960.00, 540.00) | 21.286 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (0.4600, -0.0800) | (947.00, 548.00) | 20.683 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |
| Background | - | (0.7200, 0.0800) | (973.00, 532.00) | 20.108 | inside_outer_contour=true, even_odd_filled=false, nonzero_filled=false (outer ring 0) |

## `fClef`

- Requirement class: DisjointComponents (no background requirement; ≥1 ink point per filled subpath)
- Overall status: **satisfied = true**
- Subpaths: 3 (matches recorded 3)
- Ring signed areas (staff-space², shoelace, ring order): `[2.534, 0.153, 0.148]`
- Bounding box (staff space): `[-0.019999999552965164, -2.5399999618530273, 2.7360000610351563, 1.0479999780654907]`
- Outer contour ring index: 0
- Transform: scale=100, tx=824.200, ty=465.400, target=1920x1080
- background_required=false, background_satisfied=true
- subpath_coverage_required=true, subpath_coverage_satisfied=true
- Ink candidates found (>= 8px clearance): 3
- Background/hole candidates found (>= 8px clearance): 0
- Ink point spacing relaxed: false
- Background point spacing relaxed: false

| class | subpath_index | staff (x, y) | device (x, y) | clearance (device px) | hole evidence |
|---|---|---|---|---|---|
| Ink | 0 | (0.5000, -0.0200) | (874.20, 467.40) | 41.560 | - |
| Ink | 1 | (2.5160, 0.5000) | (1075.80, 415.40) | 21.974 | - |
| Ink | 2 | (2.5240, -0.4960) | (1076.60, 515.00) | 21.149 | - |

